次の問題があります。私はそれのために持っViewPager
てFragmentPagerAdapter
います。
私がする必要があるのは、このページが選択されたときにある私のからいくつかのメソッドを呼び出すことFragment
ですViewPager
。
すべてのフラグメントをList
アダプター内に保持しようとしましたが、問題は、デバイスを回転させるときにアダプターが以前のフラグメントを使用することです。ローテーション後に新しいフラグメントが作成され、それらのリストがありますが、以前のフラグメントにアクセスする方法がわかりません。新しいフラグメントのみへの参照があります。
これが私のアダプターです:
public class MainPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;
public MainPagerAdapter(FragmentManager fm) {
super(fm);
fragmentList = new ArrayList<Fragment>();
fragmentList.add(new TaskPageFragment());
fragmentList.add(new HistoryFragment());
fragmentList.add(new TestFragment());
}
@Override
public Fragment getItem(int i) {
return fragmentList.get(i);
}
@Override
public int getCount() {
return 3;
}
}
もちろん、オブジェクトのようにのみ作成されたフラグメントにアクセスしようとすると、アクティビティコンテキストにアクセスできません。
Fragment fragment = pagerAdapter.getItem(i);
if (fragment instanceof SelectionListener) {
((SelectionListener)fragment).onTabSelected();
}
これがonTabSelected()
メソッド呼び出しです。これは、各フラグメントに実装したインターフェイスでありViewPager
、画面の回転後に呼び出されるとnullになりますContext