2013-06-18 57 views
3

我想在一行中做兩個片段事務。我如何知道片段事務處理完成?

Fragment1 fragment1 = new Fragment1(); 
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.replace(R.id.fragment_container, fragment1); 
transaction.addToBackStack(null); 
transaction.commit(); 

Fragment2 fragment2 = new Fragment2(); 
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.replace(R.id.fragment_container, fragment2); 
transaction.addToBackStack(null); 
transaction.commit(); 

但是,如果我這樣做,會有一些併發問題。 有沒有辦法讓我實現一個回調函數,這樣我就可以在第一個事務完成後立即啓動第二個事務?

+0

'會有一些共存問題' - 肯定不應該有。交易應按您提交的順序進行。 – kcoppock

回答

1

可以手動刷新隊列使將要執行的掛起的片段事務。你要找的電話是:

FragmentManager fm = getSupportFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 

    ft.replace(android.R.id.content, fragment, name).addToBackStack(null).commit(); 
    fm.executePendingTransactions(); 

通過調用fm.executePendingTransactions();你強迫所有未決訴訟,然後再繼續發生。

相關問題