で使用ActionBar Tabs
していAndroid 4
ます。私は 5 を持ってBroadcast receivers
いますが、それらはすべて UI の一部を更新します。私のアプリには 2 つのタブがあり、両方のタブには異なる UI が関連付けられています (つまり、両方のタブには異なる xml ファイルが関連付けられており、タブの選択に応じて拡張されます)。タブごとに、フラグメントを膨らませています。
最初は、1 つのタブのみを表示しています。そのタブに関連付けられた UI からボタンをクリックすると、別のタブが追加され、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.
新しいタブが作成されるたびに、その UI は以前のタブの UI に置き換えられます。そのため、A and B
呼び出されると、タブ 1 からの UI が更新されますが、C が受信されると、UI は Tab2 の UI に置き換えられます。 UIを更新しますが、D and E
受信するとタブ1のUIを更新しようとしますが、タブ2が膨張しているD and E
ため、変更を試みたステートメントでnullポインター例外が発生します。
教えてください、放送局に合わせて UI を更新するにはどうすればよいですか?
更新:現在、次のように NPE を取得しています: これは受信機の 1 つの内部にあり、ここで新しいタブを作成しており、放送受信機からテーブルを挿入したいと考えています。
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);
}
}