片段保存状态

时间:2018-04-11 06:03:18

标签: android android-fragments

我已经阅读了很多关于保存状态和碎片的内容,但我无法绕过它。

当用户登录时,我有一个加载的片段。然后,用户可以从各种类别中进行选择,这些类别将用新的片段替换当前片段。在这个新片段中,用户可以单击GridView中的项目,这将导致检查显示。

当我按下后退按钮时,我该如何保存点击的项目? onSavedInstanceState永远不会被称为,当我尝试导航回来时,似乎我的片段正在重新创建。

一些代码:

当用户首次进入应用

//  creates the home fragment
Fragment homeFragment = new HomeFragment();
FragmentTransaction fragmentTransaction = 
getSupportFragmentManager().beginTransaction();

fragmentTransaction.add(R.id.content_frame, homeFragment);
fragmentTransaction.commit();

当用户点击某个类别

Bundle bundle = new Bundle();
bundle.putSerializable("subCategory", subCategory);

Fragment ingredientsFragment = new IngredientsFragment();
ingredientsFragment.setArguments(bundle);
FragmentTransaction fragmentTransaction = 
getActivity().getSupportFragmentManager().beginTransaction();

fragmentTransaction.replace(R.id.content_frame, ingredientsFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

1 个答案:

答案 0 :(得分:0)

当您从HomeFragment移动到IngredientsFragment时,您正在将1个片段替换为另一个片段(HomeFragment By IngredientsFragment),因此当您从IngredientsFragment按回来时,它也将从堆栈中移除IngredientsFragment,并且HomeFragment已被删除,这是预期的行为。

你可以做的是当你调用IngredientsFragment Fragment然后“添加”它不被替换,当用户按下然后从堆栈中删除IngredientsFragment时。