決定重寫了這個問題:開關片段,同時維護國家
我有三個片段給他們打電話A B C.每間都設有供用戶填寫一些字段的視圖。用戶應該能夠使用菜單在不同的片段之間切換。如果用戶填寫片段A中的信息,然後切換到C填寫更多信息,然後切換回A,則用戶在A中鍵入的信息仍然應該存在。
我想我需要以某種方式使用FragmentManager但我無法找出正確的組合,增加/替換/高度......這都需要做出它的工作就是我想要的。
是否有人可以提供一個代碼片段,讓我到片段之間進行切換,同時保持每個片段的視圖狀態。
當前工作溶液:
mContent是活動片段,並且是活性的私有成員變量。
如果有人看到什麼不對這種方法或一種方法,使之更有效率/更穩健請讓我知道!
public void switchContent(String fragmentTag) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
if (fragmentManager.findFragmentByTag(fragmentTag) != mContent) {
if (!mContent.isDetached()) {
transaction.detach(mContent);
}
if (fragmentManager.findFragmentByTag(fragmentTag) == null) {
if (fragmentTag.equals("details")) {
mContent = ScheduleDetailsFragment.newInstance();
} else if (fragmentTag.equals("notes")) {
mContent = ScheduleNotesFragment.newInstance();
} else if (fragmentTag.equals("exceptions")) {
// @TODO - Create Exceptions Fragment
}
} else {
mContent = (SherlockFragment) fragmentManager.findFragmentByTag(fragmentTag);
}
if (mContent.isDetached()) {
transaction.attach(mContent);
} else if (!mContent.isAdded()) {
transaction.add(R.id.content_frame, mContent, fragmentTag);
}
transaction.commit();
}
getSlidingMenu().showContent();
}
謝謝你, 彌敦道
使用.detach(),您的狀態正在被這種方法丟失嗎?重新連接時,您的觀點會丟失嗎?或者這給出了正確的結果? – flobacca
這給正確的結果,只是不知道,如果它堅持片段的最佳實踐/如果能夠變得更好。 – Nath5