2013-02-22 69 views
0

我有片段活动,在片段A上开始,然后可以更改为片段B.如果我在片段B上,并旋转我的设备。它加载原始片段A而不是片段B.我以实用的方式加载片段A和B.我认为机器人应该救我是哪个片段自动我没有覆盖的onSaveInstanceState片段旋转不恢复当前片段

我这是怎么装的片段

FragmentTransaction t = this.getSupportFragmentManager() 
      .beginTransaction(); 
    t.replace(R.id.fragholder, new MainFragment()); 
    t.commit(); 
+0

邮政相关的代码 – dymmeh 2013-02-22 22:01:24

回答

0

只需添加机器人:configChanges =“方向|屏幕尺寸”你的清单和Android照顾一切为您

+1

根据configChanges属性上Activity类的officail文档:“应该避免使用这个属性,只能用作最后一个请阅读处理运行时更改以获取有关如何正确处理由于配置更改而重新启动的更多信息“。引用注意到的文档:http://developer.android.com/guide/topics/manifest/activity-element.html – 2013-02-27 00:10:43

0

当你旋转你的设备,它会破坏你的活动,并重新创建它。所以假设Fragment A是默认的Fragment,那么当Activity被重新创建时,它会加载它是合乎逻辑的。所以你需要重写onSaveInstanceState来存储哪个片段是可见的,然后在onCreate中重新加载该片段。

参考相关活动的生命周期DOC:http://developer.android.com/training/basics/activity-lifecycle/recreating.html

+0

好是有去存储对实际片段的引用?从我可以看到我只能保存原始数据类型。在这种情况下,setRetainInstance(true)会帮助我。虽然我不完全确定如何使用这种方法 – user1634451 2013-02-22 22:36:04

+0

我会做的只是定义常量或与片段相对应的枚举,然后只存储这些片段。 – 2013-02-22 22:37:16

+0

所以要回答,不,你不能存储碎片本身,只是一个映射到片段的原始类型。 – 2013-02-22 22:49:13