Android 如何在活动中更改片段并保存状态
我有一个活动,可以使用下面的方法动态添加片段Android 如何在活动中更改片段并保存状态,android,android-fragments,Android,Android Fragments,我有一个活动,可以使用下面的方法动态添加片段 FragmentTransaction transaction=getSupportFragmentManager().beginTransaction(); FragmentA fragmentA = new FragmentA(); transaction.add(R.id.fragment_container, fragmentA, "fragmentA"); transaction.addToBackStack("fragmentA"
FragmentTransaction transaction=getSupportFragmentManager().beginTransaction();
FragmentA fragmentA = new FragmentA();
transaction.add(R.id.fragment_container, fragmentA, "fragmentA");
transaction.addToBackStack("fragmentA");
transaction.commit();
FragmentA有一个文本视图。我的活动上有一个导航抽屉,我想根据在导航抽屉中单击的项目在片段(例如FragmentA、FragmentB和FragmentC)之间切换。当更改为另一个片段时,如何保存片段的状态。我已经在SavedInstance(Bundle outState)上实现了onSavedInstance
和onActivityCreated(Bundle savedInstanceState)
但savedInstanceState
始终为空。我希望在从FragmentB更改,然后从FragmentB更改回FragmentA时,能够保存FragmentA的字段
按下后退按钮时无法保存状态。看起来这些字段没有被保存
正确的方法是什么 您可以使用SharePreFrence将数据保存在FragmentA中,并在再次调用时读取数据。另外一个优点是,如果需要,保存在SharePreferences中的数据可以在其他片段中读取 关于片段的有用链接
-
-除非片段的活动对其自身和附加片段进行调用,否则永远不会调用片段的onSaveInstanceState(Bundle outState)。因此,只有在某些东西(通常是旋转)强制活动SaveInstanceState并在以后还原它时,才会调用此方法 所以在createView中,您可以执行类似的操作 . . 。 在onPause()方法中保存值
我在下面的链接中找到了一种快速的方法来维护每个片段的状态 我没有意识到FragmentTransaction有一个
hide()
方法来隐藏当前片段的视图,还有一个show()
方法来再次显示它
Bundle mySavedInstanceState = getArguments();
String value = mySavedInstanceState.getString(KEY);
@Override
public void onPause() {
super.onPause();
String value = //get value from view;
getArguments().putString(KEY, value);
}