Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何保持片段视图状态?_Android_Android Fragments_Android Navigation_Android Architecture Navigation - Fatal编程技术网

Android 如何保持片段视图状态?

Android 如何保持片段视图状态?,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

我对碎片系统有怀疑

我有两个片段,比如A和B

如果我将A移动到B

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
导航到fragment
B
,则可以使用
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对象。