2012-06-18 183 views
1

我想要執行以下操作。有兩個片段第一個和第二個。必須在它們之間進行轉換。當我從第二個片段開始,首先存儲在堆棧中。當我點擊後退按鈕時,第二個片段被移除並從堆棧中返回第一個片段。我再次無法進入第二個片段 - 它已被刪除。我怎麼解決這個問題?在兩個片段之間切換

在主要活動(回調片段1):我動態添加

@Override 
public void onNavigate() { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    Fragment1 newFragment1 = (Fragment1) getFragmentManager().findFragmentByTag("frag_1"); 
    Fragment2 newFragment2 = (Fragment2) getFragmentManager().findFragmentByTag("frag_2"); 
    ft.replace(R.id.main, newFragment2); 
    ft.remove(newFragment1); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 

片段:

FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.add(R.id.main, new Fragment1(), "frag_1"); 
    ft.add(R.id.main, new Fragment2(), "frag_2"); 
    ft.commit(); 
+0

爲什麼你叫ft.remove(newFragment1);如果你已經取代它,並已被刪除了? –

+0

只是爲了:)但問題是按下Back鍵時破壞片段2。 – Vladimir

+0

你想在單擊返回按鈕後訪問Fragment2對象嗎? –

回答

0

我解決了這個問題:)。我隱藏第一個片段並將事務添加到後端堆棧。當我點擊按鈕返回我回到片段

@Override 
public void onNavigate() { 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    Fragment1 newFragment1 = (Fragment1) getFragmentManager().findFragmentByTag("frag_1"); 
    ft.hide(newFragment1); 
    ft.addToBackStack(null); 
    ft.commit(); 
}