0

我在Android 4中使用ActionBar Tabs。我有5 Broadcast receivers,並且他們都更新了UI的一部分。在我的應用程序中有兩個選項卡,這兩個選項卡具有不同的UI關聯(即,兩個選項卡都有不同的xml文件與它們相關聯,根據選項卡選項,它將爲inflated)。對於每個標籤,我都在爲fragment充氣。使用廣播接收器和標籤在ActionBar中開發UI中的NPE

最初,我只顯示一個選項卡。在點擊與該選項卡關聯的用戶界面上的按鈕時,我添加了另一個選項卡,並收到5個廣播接收器。我以任何順序收到廣播接收器。現在說有以下廣播接收機:A B C D E

A, B, D and E updates the UI which is part of Tab 1. 

C updates the UI which is part of Tab 2. 

每當創建一個新的標籤,其用戶界面得到與前一個標籤的用戶界面所取代,所以當,說A and B被調用,他們更新是從Tab 1的用戶界面,但當收到C時,用戶界面現在被替換爲Tab2's用戶界面,並且它更新用戶界面,但是當收到D and E時,他們嘗試更新tab 1的用戶界面,但由於tab 2現在被誇大了,因此我在該語句上得到空指針異常D and E試圖進行更改。

所以請告訴我,我應該如何更新我的UI根據broadcasters

更新:現在,我得到NPE以下:這是我的接收器之一,在這裏我創建新的選項卡,並希望從廣播接收器插入表。

ActionBar actionbar = getActionBar(); 
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
ActionBar.Tab bTab = actionbar.newTab().setText("B"); 
bFragment = new BFragment(); 
bTab.setTabListener(new MyTabsListener(bFragment)); 
actionbar.addTab(bTab, true); 

final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.mdsTable); // NPE linearLayout is not getting initialized. 

我不明白爲什麼會這樣,因爲我已經實現MyTabsListener爲:

class MyTabsListener implements ActionBar.TabListener { 
    public Fragment fragment; 

    public MyTabsListener(Fragment fragment) { 
     this.fragment = fragment; 
    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     Toast.makeText(StartActivity.appContext, "Reselected!", 
       Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     ft.replace(R.id.fragment_container, fragment); 
    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     ft.remove(fragment); 
    } 
} 

更新:如果我評論的接收器部分(只檢查,如果我可以動態創建標籤),如果我在接收器外面寫同樣的東西,它運行沒有任何問題。

請幫幫我。

回答

0

我已經解決了這個問題:

當我BroadCastReceivers被調用,我保存的所有進來onReceive()方法中的數據,而當用戶移動到任何標籤,它onCreateView()叫,所以我更新UI在這種方法中,所以沒有直接從Tab2直接到Tab1的問題,它將全部基於用戶的選擇,當他想要從Tab2到Tab1時,UI將被更新並因此解析NPE

0

那麼,很可能你沒有將id爲mdsTable的視圖關聯到你當前的佈局。只有這些代碼樣本很難確定問題來自哪裏。 mdsTable中的哪個佈局,以及您在哪裏膨脹此佈局?