activity
には2つのfragments
があります。私は、私はそのフラグメントに、私が持っている、Fragment
を拡張する2つのクラスを持っている<fragment/>
タグを使用していない:フラグメントとブロードキャストレシーバ
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.bfragment, container, false); // this will inflate the Fragment in activity.
}
今の問題は、私はいくつかの受信機がからUIを更新し、そこから活動のいくつかの放送受信機を受け付けておりますされます最初のフラグメントといくつかはUIを2番目から更新します。
私のメインacitivityで定義された私の放送受信機の一つは、次のとおりです。
private BroadcastReceiver bcReceived = new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent intent) {
Log.d("", "BC Object Received");
ActionBar actionbar = getActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab bTab = actionbar.newTab().setText("B");
Fragment fragment = new BFragment();
bTab.setTabListener(new MyTabsListener(fragment));
actionbar.addTab(bTab, true);
final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.bTable); // Getting null pointer exception here. linearLayout is not getting initialized.
私は上記のLinearLayoutを使用して、それでビューを膨らませるためにそれを使用したいと思います。しかし、NPEを取得する。
ここで、一部のブロードキャスト受信者が最初のフラグメントを更新すると正常に動作しますが、ブロードキャスト受信者が2番目のフラグメントをアクティビティから更新するとNPEを取得します。
私の質問はどのようにしてフラグメントを更新すればよいですか?それは私の活動の中にあるべきですか?はいの場合はどの方法ですか?そうでなければ、どこでフラグメントを更新すべきですか?
私を助けてください!
レイアウト(R.layout.bfragment)は2つのフラグメントで同じですか? R.id.bTableは両方のフラグメントに存在するかどうか? –
両方のレイアウトが似ていないかどうかを尋ねる場合は、いいえ。しかし、両方のレイアウトは前のレイアウトを置き換えることによって同じコンテナ内で膨張します。 – Shrikant
R.id.bTableはあなたのコンテナですか? –