2014-01-14 42 views
0

我的應用程序有三個標籤,每個標籤使用一個片段來顯示其內容。我正在使用FragmentPageAdapterViewPager。我的第二個標籤片段有兩個子片段。而在第二個孩子片段中,我顯示了兩個選項卡。當invalidateoptions菜單被調用時,片段從標籤中脫離

Tab1    Tab2   Tab3 
Fragment1  Fragment2  Fragment3 

     ChildFragment1 or ChildFragment2 

         ChildTab1   ChildTab2 
        ChildFragment1 ChildFragment3 

要精心它咬了更多:

  • TAB2含有Fragment2。

  • Fragment2裏面有一個條件。如果條件爲真,則顯示childFragment1,否則顯示childframent2。

  • Inside childfragment2我顯示兩個選項卡childtab1和childtab2 childtab1顯示childfragment1和childtab2顯示childfragment3。

  • 在Fragment2我使用getchildfragmentmanager()。

  • 在childFragment2我再次使用getchildfragmentmanager並使用fragmentTabs顯示選項卡。

在我mainactivity我正在上顯示的某些條件基礎上的ActionItem。如果編碼爲真,則顯示動作項將其刪除。要更新optionsmenu我使用invalidateOptionsMenu()和actionitem顯示隱藏的邏輯是onPrepareOptionsMenu()實現:

MenuItem alertIcon = menu.findItem(R.id.alertIcon) 
if(condtition) 
    alertIcon.setVisibility(true); 
else 
    alertIcon.setVisibility(false); 

當執行該代碼片段1和Fragment3從標籤消失。但是Fragment2的內容仍然可見。

我無法確定此問題的根本原因,請幫助。

回答

0

最後經過大量的挖掘,我找到了解決上述問題的方法。我從UI線程之外調用invalidateOptionsMenu()。所以,我只是修改了呼籲:我正在接受我的活動也陷入了另一個線程

this.runOnUIThread(new Runnable){ 
    @Override 
    public void run(){ 
     invalidateOptionsMenu(); 
    } 
}); 

回調,其他則主線程更新UI問題造成的。

相關問題