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(); 
} 

,使得它不膨脹,當第一片段我們在第二個方向改變方向