1

目前的情况上旋转片段变动具有导航抽屉

在我的应用我有片段导航的抽屉里。在纵向模式下一切正常。

问题

假设当在纵向模式下我选择导航抽屉第二项。它可以完美加载,但是当我将手机旋转到横向模式时,导航菜单中的第一个片段会被加载而不是第二个。

我知道我有救实例的片段,但我不知道该怎么做,我应该做的主要活动或片段本身

回答

2

你应该做的是在你的Fragment

只要按照这些链接:

Android - save/restore fragment state

或许:

Once for all, how to correctly save instance state of Fragments in back stack?

此外,我们再提一下onRestoreInstanceStateFragment的不具有method.So,你应该使用onActivityCreated,它接收bundle以及保存的实例状态(或空值)。

在文档看看:

http://developer.android.com/reference/android/app/Fragment.html#onActivityCreated(android.os.Bundle)

+0

我已经在onActivityCreated中使用了setRetainState。还有什么要求? –

+0

检查此链接:http://stackoverflow.com/questions/11182180/understanding-fragments-setretaininstanceboolean – Mohsen

+1

感谢您指向链接我得到我的代码工作与某些修改。我正在通过硬编码的int来显示主要活动中的片段方法。所以在保存实例状态,我刚刚保存了位置,然后在onCreate –

0

我回答这个线程同样的问题:

How to keep the same fragment when activity restarts due to orientation change in a Navigation Drawer Activity

我试图解释为什么该解决方案,我给作品,所以如果你有兴趣检查一下。

为了解决这个问题我简单地把该膨胀内部的初始片段的代码,如果(在导航抽屉活动的OnCreate):

super.onCreate(savedInstanceState); 
if(savedInstanceState==null){ 
    FragmentManager fM = getSupportFragmentManager(); 
    fM.beginTransaction().replace(R.id.NavDrawContent,new home_fragment()).commit(); 
} 

,使得它不膨胀,当第一片段我们在第二个方向改变方向