我正在使用片段創建片劑優化的應用程序。我在左邊有一個薄的導航片段,並帶有按鈕來控制哪些片段將被加載到佔據屏幕其餘部分的兩個ViewGroup容器中。例如,如果按下導航片段中的按鈕,第一個容器將加載項目列表片段(例如,用於設置,客戶等),第二個容器將加載片段以顯示項目詳細信息。如何在定位更改的內存中保留片段
因爲我想保留片段在內存中(所以,當從設置導航到客戶,然後回到設置,以前的設置片段應該在那裏,所以用戶不會失去他們的位置) - 我創建片段實例變量的活動
SettingsListFragment settingsListFragment;
SettingsDetailFragment settingsDetailFragment;
CustomerListFragment customerListFragment;
CustomerDetailFragment customerDetailFragment;
然後我創建這些片段時neccessary並根據需要與碎片更換容器。例如。
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
if(settingsListFragment == null){
settingsListFragment = new SettingsListFragment();
}
fragmentTransaction.replace(R.id.fragment_container_left, settingsListFragment);
fragmentTransaction.commit();
我的問題是,我怎樣才能保留這些實例的方向變化?
我假設我不應該使用的活動onRetainNonConfigurationInstance()方法根據 http://developer.android.com/resources/articles/faster-screen-orientation-change.html,因爲「要非常小心你通過onRetainNonConfigurationChange(對象)......這意味着你永遠不應該通過一個視圖,一個可繪製的,一個適配器等「
我也試圖從片段管理器獲得片段, Fragment clf = fragmentManager.findFragmentByTag("CLIENT LIST");
但它回來爲空。我認爲它在片段被替換後被釋放。
感謝您的任何幫助/建議。