私は最初の一歩を踏み出す Android プログラマーです。私のアプリでは、ViewPager (support.v4) を使用することにしました。
私は非常に典型的な方法ですべてのフラグメントを作成します:
@Override
public void onCreate(Bundle savedInstanceState) {
(...)
//let's initialize view pager
List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(new MainActivitySelectDatabase());
fragments.add(new MainActivityDetails());
mainActivityPageAdapter = new MainActivityPageAdapter(getSupportFragmentManager(), fragments);
mainActivityViewPager = (ViewPager) findViewById(R.id.main_activity_view_pager);
mainActivityViewPager.setAdapter(mainActivityPageAdapter);
(...)
}
次に、次の方法で 1 つのイベントについてすべてのフラグメントに通知したいと思います。
protected void informAllFragmentsWhenDatabaseStatusChanged () {
for (int i=0; i<mainActivityPageAdapter.getCount(); i++) {
((InterfaceMainDatabaseStatusChanged) mainActivityPageAdapter.getItem(i)).onMainDatabaseStatusChanged();
}
}
画面の向きを変更しなければ、すべて問題なく動作するようです。私がそれを変えると、すべてが狂ってしまいます。Fragment の getActivity や getApplication などのメソッドは null を返します。理由は不明ですが、新しいフラグメントではなく、古いバージョンのフラグメントに対してメソッドが実行されていると思います。それはどのように解決されるべきですか?メイン アクティビティからすべてのフラグメントの現在のバージョンを一覧表示する方法は?
助けてくれてありがとう。