我對此感到頭疼。管理碎片狀態
的場景是以下內容:
我有與承載4個片段A的FrameLayout一個活動。
我不介意重新創建每個片段,除了其中一個。
有一個我需要保持不變。
這裏是我的導航方案:
我想保留,而不是重建的片段是破片一。
在我的活動我有用於管理該片段此方法:
protected final static int FRAG_A=0;
protected final static int FRAG_B=1;
protected final static int FRAG_C=2;
protected final static int FRAG_D=3;
protected void displayNewFragment(int newFragment)
{
Fragment fragment=null;
String tag=null;
switch(newFragment)
{
case FRAG_A:
tag=FragA.TAG;
fragment=new FragA();
break;
case FRAG_B:
tag=FragB.TAG;
fragment=new FragB();
break;
case FRAG_C:
tag=FragC.TAG;
fragment=new FragC();
break;
case FRAG_D:
tag=FragD.TAG;
fragment=new FragD();
break;
}
if(fragment!=null)
manager.beginTransaction().replace(R.id.main_container, fragment, tag).commit();
else
Log.e(getClass().getSimpleName(), "Error creating content (null).");
}
此方法由片段時,我想切換到另一種叫,作爲parent
的參考活性(主):
parent.displayNewFragment(Main.FRAG_A) // Or FRAG_B, C, D, etc
我知道,我重新創建每個實例在方法和以前被破壞(如我所說的片段交易replace
這個工程除了要問什麼,我完美:
如何防止破壞FragA並保持其狀態?
預先感謝您。
首先,謝謝你的回答。但這不是解決方案。除非絕對必要,否則我不想將該片段添加到BackStack。我最終在Activity中設置了一個引用FragA的全局變量,而不是在'displayNewFragment'方法中重新實例化它。然後在片段中,我重新使用'onCreateView'中的根視圖,而不是每次重新創建。我幾乎可以肯定,這不是最好的解決方案,但現在它的工作。我會繼續嘗試其他方法。乾杯。 – Alberto 2014-10-20 11:08:52