我有多个片段.我想保存所有的实例在backstack,直到再次按下home键



我尝试了许多方法来保存实例,但我很困惑如何在backstack中保存实例,因为没有人描述如何使用它,如果有多个片段。我在mainactivity中的代码如下:

bottomNavigationView.setOnItemSelectedListener(item -> {
switch (item.getItemId()){
case R.id.home:
loadFragment(new HomeFragment(),0);
break;
case R.id.create:
loadFragment(new CreateFragment(),1);
break;
case R.id.profile:
loadFragment(new ProfileFragment(),1);
break;
}
return true;
});
public void loadFragment(Fragment fragment,int flag){
FragmentManager fragmentManager=getSupportFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
if(flag==0){
fragmentTransaction.add(R.id.frame_layout,fragment);
fragmentManager.popBackStack(ROOT_FRAGMENT_TAG,FragmentManager.POP_BACK_STACK_INCLUSIVE);
fragmentTransaction.addToBackStack(ROOT_FRAGMENT_TAG);
}
else {
fragmentTransaction.replace(R.id.frame_layout,fragment);
fragmentTransaction.addToBackStack(null);
}
fragmentTransaction.commit();
}

我建议你让你的片段类单例。

private static MyFragment fragment;

public static MyFragment getInstance() {
if (fragment == null) {
fragment = new MyFragment();
}
return fragment;
}

然后使用getInstance()方法实例化你的片段

最新更新