2013-02-26 65 views
1

我在執行反向導航時遇到問題。我該如何修復背部導航碎片?

活動A1開始活動A2A2包含一個完整的屏幕片段:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/fragment_container" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

    <!-- fragment goes here --> 

</RelativeLayout> 

A2onCreate()我在上述容器裝載片段F1:

@Override 
protected void onCreate(Bundle arg0) { 
    super.onCreate(arg0); 
    setContentView(R.layout.activity_main); 
    replaceFragment(new AccountHomeFragment()); 
} 

public void replaceFragment(Fragment f){ 
    FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.fragment_container, f); 
    fragmentTransaction.addToBackStack(f.getClass().getSimpleName()); 
    fragmentTransaction.commit(); 
} 

並且在某個點上的按鈕的用戶點擊和F1是換成F2問題是,當用戶單擊後退按鈕:

  • 第1點擊:什麼也沒發生
  • 第二點擊:從F2A1F1跳過)

我期待什麼

  • 1st click:F2 - >F1
  • 第2點擊:F1 - >A1

我注意到,如果我按回到前F1被F2代替:

  • 第1點擊:F1 - >黑屏
  • 第2點擊:空白屏幕 - >A1
+0

關於你的期望,你的意思是F2-> F1然後F1-> A1,對吧? – dmon 2013-02-26 14:55:32

+0

@dmon:絕對。我糾正了這個問題。 – znat 2013-02-26 15:30:12

+0

你如何添加F2?你使用replaceFragment方法嗎? – 2013-02-26 15:50:22

回答

0

我認爲你的問題可能是由於你的第一個片段添加到後臺堆棧造成的。在您的onCreate中,您可以撥打replaceFragment自動添加它。只需手動添加片段,而不用撥打addToBackStack,並對所有後續片段事務使用replaceFragment函數。

+0

謝謝你的回答。我嘗試過,但是當我在F2中單擊時,我跳過A2-F1並直接返回到A1 – znat 2013-02-27 22:12:57