个人笔记整理
Fragment Fragment使用 Acitivity静态添加Fragment:布局中添加控件
使用全类名直接指定相应fragment,activity就会自动嵌入该fragment
Activity动态添加和管理Fragment:布局文件添加
activity中动态替换Fragment代码
private void replaceFragment(Fragment fragment){
// 得到Fragment管理实例
FragmentManager fragmentManager = getSupportFragmentManager();
// 开启一个事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
// 进行替换Fragment,参数1为控件ID,参数二为fragment实例(new得到)
transaction.replace(R.id.framelayout, fragment);
// 根据需要;将fragment添加到返回栈,这样back返回的时候将是之前添加的fragment,直到所有fragment都弹出
// transaction.addToBackStack(null);
// 提交事务
transaction.commit();
}
Activity给Fragment传递消息
// 新建一个Bundle对象
Bundle bundle = new Bundle();
// 放入相应数据键值对
bundle.putString("message","I'm from Activity");
// new一个fragment实例
MyFragment myFragment = new MyFragment();
// 将参数传递进去
myFragment.setArguments(bundle);
Fragment接收的时候
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
// 获取传递的信息
Bundle bundle = this.getArguments();
// 根据键获取传递信息中的某个值
String msg = bundle.getString("message");
Log.d(TAG,"From Acitvity: "+msg);
}
使用Java接口进行通信
为Fragment通信新建一个接口
public interface IFragmentcallback {
void sendMsgToActivity(String msg);
String getMsgFromActivity(String msg);
}
Acitvity代码
myFragment.setCallback(new IFragmentcallback(){
@Override
void sendMsgToActivity(String msg){
Log.d(TAG,"From Fragment: "+msg);
}
@Override
String getMsgFromActivity(String msg){
return "Hi,I'm from Activity.";
}
})
Fragment代码
private IFragmentcallback callback;
public void setCallback(IFragmentcallback callback){
this.callback = callback;
}
其他方案
eventBus,LiveData…
Fragment生命周期1.打开界面
onCreate() -> onCreateView() ->onActivityCreated() ->onStart() ->onResume()
2.按下主屏键
onPause() ->onStop()
3.重新打开界面.
onStart() ->onResume()
4.按后退键
onPause()- >onStop()- >onDestroyView()->onDestroy()- >onDetach()
在fragment栈中被覆盖:onPause()- >onStop()- >onDestroyView()
fragment栈 重新显示:onCreateView() ->onActivityCreated() ->onStart() ->onResume()
ViewPager2与FragmentAndroidProjectPractice/ViewPagerTest at main · Forgo7ten/AndroidProjectPractice (github.com)



