片段的目标不在片段管理器中

时间:2013-08-27 06:36:11

标签: android android-fragments

我是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。

2 个答案:

答案 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

请详细说明你想要什么