我正在使用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()
),但它也没有帮助。
答案 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