2014-03-27 105 views
1

我有一個表格分成幾個片段。我呼籲每片段:Android片段之間的導航

final FragmentManager fm = getSupportFragmentManager(); 
final FragmentTransaction ft = fm.beginTransaction(); 
if(fragment.equals(this.formOne) || fragment.equals(this.formTwo)) { 
     ft.setCustomAnimations(android.R.anim.slide_in_left,android.R.anim.slide_out_right); 
    } 

ft.replace(R.id.fragForm, fragment); 
ft.addToBackStack(null); 
ft.commit(); 

當我後退按鈕單擊它跳過前面的片段,並返回到活動而是一個空白屏幕。

例如,我有3個片段:A - B - C^

如果我去到C,想回到以前的活動,我點擊後退按鈕,所以我對B,我再次點擊,我在A上,當我再次點擊時,我有一個空白屏幕,我需要點擊另一次回到上一個活動。

我不明白爲什麼我的Activity沒有這個空白屏幕。

我不開發者文檔中明白這一點:

注:當 交易是你不應該添加交易到後面堆棧水平導航(如切換標籤時) 或當修改內容外觀(例如,在調整 過濾器時)。有關更多信息,請參閱導航設計指南,瞭解適合的返回導航爲 的時間。

如果我們不能使用它,那麼解決方案是什麼?

回答

1

如果沒有導航到以前的片段,不要將其添加到堆棧中

刪除此

ft.addToBackStack(null); 
+0

但我想能夠回到以前的片段。 – deveLost

+0

@Myste所以你有什麼是正確的 – Raghunandan

+0

它沒有完美運行,因爲我有一個「空白」屏幕:/ – deveLost

5

不要把它添加到當您添加片段A.返回堆棧

ft.add(R.id.fragForm, fragmentA); 
ft.commit(); 


ft.replace(R.id.fragForm, fragmentB); 
ft.addToBackStack(null); 
ft.commit(); 

ft.replace(R.id.fragForm, fragmentC); 
ft.addToBackStack(null); 
ft.commit(); 
+1

或者我的項目可能會對您有所幫助。 https://github.com/fengdai/FragmentMaster –