2013-09-01 89 views
1

當我按下「後退」按鈕(同時在仿真器和Galaxy S2上測試),應用程序關閉,無論有多少片段事務已被提交:(爲什麼沒有addToBackStack填充BackStack?

好吧,以防萬一,我會發布我的實現片段的交易,雖然我懷疑他們是問題

@Override 
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
    Fragment fragment; 
    switch(tab.getPosition()) { 
    case(0): 
     fragment = new Fragment1(); 
     break; 
    case(1): 
     fragment = new Fragment2(); 
     break; 
    case(2): 
     fragment = new Fragment3(); 
     break; 
    default: 
     fragment = new Fragment(); 
     Toast.makeText(getBaseContext(), "Error", Toast.LENGTH_SHORT).show(); 
     break; 
    } 
    Bundle args = new Bundle(); 
    fragment.setArguments(args); 
    FragmentTransaction ft = getFragmentManager().beginTransaction(); 
    ft.replace(R.id.okvir, fragment); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 

而且還

public void searchResultsView(List<School> results) { 
    setResults(results); 
    FragmentResults searchFragment = new FragmentResults(); 
    Bundle args = new Bundle(); 
    searchFragment.setArguments(args); 
    getFragmentManager().beginTransaction().replace(R.id.okvir, searchFragment).addToBackStack(null).commit(); 
} 

現在我會盡量提供有關應用程序的技術細節,這樣你就可以弄清楚什麼是抱着它回(諷刺)。 應用程序有一個活動,並且您可以得出結論,利用ActionBar來初始化TabHost。 ActionBar.TabHost有三個連接到它的標籤,分別對應於Fragment1,Fragment2和Fragment3。 FragmentResults從F​​ragment2選項卡調用。如果您需要更多信息,請在評論中告訴我。

謝謝您的時間和精力。歡呼聲

P.S. Interenstingly,當我打電話DialogFragment,即使沒有AddToBackStack(空)方法按「返回」按鈕返回到調用它,並且不關閉應用程序的片段......

回答

0

更改此:

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

爲此:

ft.replace(R.id.okvir, fragment,"TAGNAME"); 
ft.addToBackStack("TAGNAME"); 
ft.commit(); 

我OMRI從以色列望其幫助,如果u有更多PROBLAM CONTECT ME [email protected]

相關問題