0

嗨繼我的代碼,以顯示從列表片段的細節片段更換片段,然後按回

getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.FragmentContainer1, DealFragment.newInstance(dealItems, position, currentPage, totalCount)).addToBackStack(null).commit(); 

現在,當我按後退按鈕,我得到新ListFragment.ListFragmnt狀態不保存。

我提到一些棧的問題,但沒有得到正確的答案

我想下面的代碼,但是當應用程序在雲背景和被殺害的系統(就像我從我的詳細視圖中打開鉻,它會導致問題當我從Chrome瀏覽器返回時,我的應用程序關閉並最小化)FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); ft.hide(getActivity().getSupportFragmentManager().findFragmentById(containerId)); ft.add(containerId, detailFragment); ft.addToBackStack(null); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.commit();

當我移動到ListFragment以詳細說明熱維護狀態的詳細信息片段時,有關此問題的任何解決方案。

我已經提到這個鏈接從堆棧溢出here is the link

我想要的功能相同的Gmail應用程序時,我們從列表中的細節去,回來列出片段。滾動位置,一切都保持未在我的情況發生

+0

您是否希望在按下bac後不會得到ListFragment? DetailFragment中的k按鈕? – Sac

+0

no沒有爲listgfragment保存片段狀態 – apk

+0

嘗試按照我的回答覆蓋onBackPressed。 – Sac

回答

0

試試這個:

@Override 
public void onBackPressed() { 
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) { 
     getSupportFragmentManager().popBackStack(); 
    } else { 
     this.finish(); 
    } 
} 
+0

這沒有幫助 – apk

+0

@apk其實隱藏第一個片段是個好主意。那麼使用第二種方法有哪些問題? – Sac

+0

已更新的問題與問題 – apk

0

在你的活動設置的第一個片段:

 ListFragment listFragment = new ListFragment(); 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.add(R.id.FragmentContainer1, listFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 

然後在listfragment呼叫細節片段:

 DetailFragment detailFragment = new DetailFragment(); 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.replace(R.id.FragmentContainer1, detailFragment); 
     transaction.addToBackStack(null); 
     transaction.commit(); 
+0

再次閱讀問題這不是我的問題 – apk

+0

是的,如果您不覆蓋onBackPressed,這將保留您在上一個片段中的最後一個已知狀態。或者如果你願意,沒有什麼會改變。 – tompadre

+0

你還沒有得到正確的答案 – apk