在我的應用程序中,我有3個片段。Android片段後退按鈕覆蓋其他片段並保持活動
App從[1]開始,用戶只能導航到[2],然後選擇導航到[3]。
由於[3]內心深處,我希望[3]直接回到[1]。
目前我使用addToBackStack(null)調用[2]。由於我不會在[3]上調用addToBackStack,我認爲它會回到[1]。
會發生什麼,[3]返回到[1],但現在兩個片段都顯示爲重疊。片段[3]不會調用onPause()。再次調用片段[2]將在其他頂部顯示[2],而不是清除屏幕。
來回導航會導致應用程序崩潰。有時在打開一個新的片段時,有時候會碰到後退按鈕。始終以「片段已添加」錯誤(後退按鈕非常奇怪,但在切換片段之前也檢查過)。
任何想法可能會導致這種奇怪的行爲?使用addToBackStack或[3]也可以消除這個問題,但並不能解決我的需求。我確實在適當的時候調用所有超級方法。
信息:示例代碼下載在上2.X http://beadsoft.de/android/FragmentTest.zip
相同的行爲,4.2.2。使用ActionBarCompat。
代碼添加片段:
FragmentManager fm = getActivity().getSupportFragmentManager();
Fragment fragment = fm.findFragmentByTag(Fragment_xyz.FRAG_TAG);
if (fragment == null)
fragment = Fragment_xyz.newInstance(int data);
fm.beginTransaction().replace(R.id.container, fragment, Fragment_xyz.FRAG_TAG)
.addToBackStack(null).commit()
怎樣的應用程序,然後直接從片段去3比1,當用戶點擊後退按鈕跳過2? –