我是Android编程的新手。
我只是尝试在我的片段中保存ListView
的状态。为此,我遵循无头片段(没有UI的片段)。在这个片段中,我保存了ListView
中使用的数据,并从主片段(具有UI的片段)开始无头片段。
现在我得到了例外:
java.lang.IllegalStateException: Failure saving state: RetainedFragment{4161f850 #1 work} has target not in fragment manager: JobOpeningFramgent{41601c00}
就我的担心而言,当我试图用DrawerLayout
中的另一个片段替换片段时,就会发生这种情况。
请更好地了解此异常的原因。
感谢。
Boopathy。
答案 0 :(得分:2)
这是一个解决方法:
将其放入导致问题的片段中:
@Override
public void onSaveInstanceState(final Bundle outState) {
setTargetFragment(null, -1);
...
并记得在需要时将其设置为真正的目标片段。
答案 1 :(得分:0)
我不确定你想保存什么以及你想在哪里保存它。
官方文件指出:"A Fragment represents a behavior or a portion of user interface in an Activity."
使用Fragment
作为另一个Fragment的UI状态的容器通常是一个坏主意。
如果要在整个活动生命周期(包括屏幕旋转)中保留一些值,只需覆盖onSaveInstanceState
方法。如果你想在活动生命周期之后使用singelton类或Preferences
存储一些变量,并且如果你想在app终身使用后存储你的值SharedPreferences
请详细说明你想要什么