Android 如何保持片段视图状态?
我对碎片系统有怀疑 我有两个片段,比如A和B 如果我将A移动到BAndroid 如何保持片段视图状态?,android,android-fragments,android-navigation,android-architecture-navigation,Android,Android Fragments,Android Navigation,Android Architecture Navigation,我对碎片系统有怀疑 我有两个片段,比如A和B 如果我将A移动到B Navigation.findNavController(v).navigate(R.id.B) 现在,onDestroyView的一个片段被称为“我知道这很正常”。 在B片段之后,我称之为PopBackStack Navigation.findNavController(v).popBackStack() 现在,视图创建的一个片段被称为我也知道这是正常的。 现在A片段所有ui都是初始状态 我的问题是如何保持片段UI状态,如r
Navigation.findNavController(v).navigate(R.id.B)
现在,onDestroyView的一个片段被称为“我知道这很正常”。
在B片段之后,我称之为PopBackStack
Navigation.findNavController(v).popBackStack()
现在,视图创建的一个片段被称为我也知道这是正常的。
现在A片段所有ui都是初始状态
我的问题是如何保持片段UI状态,如recyclerview滚动位置、FAB按钮可见性等您必须将recyclerview滚动位置、FAB按钮可见性存储在变量中,并在调用onViewCreated后设置这些值 或 您可以将其存储在onSaveInstanceState包中并保留其状态
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
如果您已使用
replaceFragment
导航到fragmentB
,则可以使用addFragment
。这将使片段A
位于背面,并在A
上方添加片段B
。现在,当您删除片段B
时,片段A
将保持原样。我正在使用导航组件。您可以使用support librart`if(savedInstanceState==null){myFragment=myFragment.newInstance();getSupportFragmentManager().beginTransaction().add(R.id.my_容器,myFragment,my_fragment_标记).commit();}else{myFragment=(myFragment)getSupportFragmentManager().findFragmentByTag(MY_FRAGMENT_TAG);}`保持片段的UI状态的最简单方法是将其设置为Singleton对象。因此,即使生命周期被重新处理,UI状态也将与您离开时相同。Bcz将在onCreateView中返回相同的UI对象。