目前的情况上旋转片段变动具有导航抽屉
在我的应用我有片段导航的抽屉里。在纵向模式下一切正常。
问题
假设当在纵向模式下我选择导航抽屉第二项。它可以完美加载,但是当我将手机旋转到横向模式时,导航菜单中的第一个片段会被加载而不是第二个。
我知道我有救实例的片段,但我不知道该怎么做,我应该做的主要活动或片段本身
目前的情况上旋转片段变动具有导航抽屉
在我的应用我有片段导航的抽屉里。在纵向模式下一切正常。
问题
假设当在纵向模式下我选择导航抽屉第二项。它可以完美加载,但是当我将手机旋转到横向模式时,导航菜单中的第一个片段会被加载而不是第二个。
我知道我有救实例的片段,但我不知道该怎么做,我应该做的主要活动或片段本身
你应该做的是在你的Fragment
。
只要按照这些链接:
Android - save/restore fragment state
或许:
Once for all, how to correctly save instance state of Fragments in back stack?
此外,我们再提一下onRestoreInstanceState
,Fragment
的不具有method.So,你应该使用onActivityCreated
,它接收bundle
以及保存的实例状态(或空值)。
在文档看看:
我回答这个线程同样的问题:
我试图解释为什么该解决方案,我给作品,所以如果你有兴趣检查一下。
为了解决这个问题我简单地把该膨胀内部的初始片段的代码,如果(在导航抽屉活动的OnCreate):
super.onCreate(savedInstanceState);
if(savedInstanceState==null){
FragmentManager fM = getSupportFragmentManager();
fM.beginTransaction().replace(R.id.NavDrawContent,new home_fragment()).commit();
}
,使得它不膨胀,当第一片段我们在第二个方向改变方向
我已经在onActivityCreated中使用了setRetainState。还有什么要求? –
检查此链接:http://stackoverflow.com/questions/11182180/understanding-fragments-setretaininstanceboolean – Mohsen
感谢您指向链接我得到我的代码工作与某些修改。我正在通过硬编码的int来显示主要活动中的片段方法。所以在保存实例状态,我刚刚保存了位置,然后在onCreate –