2014-01-19 27 views
0

我有兩個片段在活動上共享相同的點。當活動開始時,顯示fragA。當你點擊一個按鈕從fragA它被推到backstack並由fragB取代。當按下fragB的按鈕時,fragB被銷燬,fragA被從後臺堆棧中移除,但它也應該根據fragB被按下的按鈕(例如爲textview設置文本)更改一些視圖。我使用接口進行片段活動通信。一切順利,但fragA的觀點不想改變。我想我試圖改變他們,而片段是在後臺。片段在後臺時是否可以修改片段的視圖?

@Override 
    public void onFragBClick(Bundle bundle) { 
     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragA = (FragA) fragmentManager.findFragmentByTag(TAG_FRAG_A); 
     if (fragA != null) { 
      fragmentManager.popBackStack(TAG_FRAG_A_BACKSTACK, 
        FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      fragA.onFragBSignalReceived(bundle); 
     } 

    } 

這是處理通信的方法。在日誌中一切似乎都很好,onFragBSignalReceived被調用,但我無法改變fragA的意見。我的猜測是,當它被稱爲fragA仍然在背後,這就是爲什麼意見不更新。在那種情況下,我怎樣才能以其他方式實現這種行爲?

回答

1

您可能想要使用popBackStackImmediate()而不是popBackStack()。 popBackStackImmediate()將在該方法內執行操作,而popBackStack()將對該操作進行排隊並稍後執行。

+0

哦,那就是訣竅!謝謝! – Jelly