应用程序未使用几个小时后碎片消失

时间:2014-05-05 18:01:19

标签: android android-fragments state

我正在使用SlidingMenu打开左右菜单。这一切都很好,除了我找不到保存碎片的方法。应用尚未使用至少几(约6)小时后的状态。

这是我在我的一个菜单中设置片段的方式:

if (savedInstanceState != null)
    mContent = getSupportFragmentManager().getFragment(
        savedInstanceState, "mContent");
if (mContent == null)
    mContent = new SomeFragment();

setContentView(R.layout.content_frame);
getSupportFragmentManager().beginTransaction()
    .replace(R.id.content_frame, mContent).commit();

当用户在较长一段时间后回到应用程序时,一些片段(左侧片段或右侧菜单片段)变为灰色,即使我知道它并尝试以下解决方案(左侧菜单的示例):

    mLeftMenuFragment = new LeftMenuFragment();
    getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.sliding_menu_left_content_frame,
            mLeftMenuFragment).commit();

它没有帮助。

请注意,我还尝试了commitAllowingStateLoss()方法(而不是commit()),但它也没有帮助。

3 个答案:

答案 0 :(得分:1)

我不确定,但我认为最好在SharredPreferences或其他地方保存状态数据,然后手动重新创建。我认为保存实例状态更好地用于快速返回或转发或旋转等。谁知道6小时内会发生什么。 Android可以清理memor y或其他东西。你无法控制它。这是我的意见。

答案 1 :(得分:1)

我的猜测是问题不在于片段,而是在片段内部。你有菜单内容的适配器吗?检查它(可能发布你的片段和相应的视图/适配器的代码),似乎在重新填充片段后它显示相同的无效视图。

答案 2 :(得分:1)

我认为您的问题类似于this

根据那个尝试

ft.show(frag1);

应该是

ft.attach(frag1);等等,如果你这样做。

有关详细信息http://developer.android.com/guide/topics/ui/actionbar.html#Tabs