デバイスがスタンバイ状態になった後、呼び出す と、すべての変数が に設定された初期化されていないフラグメントを含む がgetSupportFragmentManager()
取得されます。FragmentManager
null
ここにいくつかのコードがあります:
this.mAdapter = new MyAdapter(getSupportFragmentManager());
this.mPager = (ViewPager) findViewById(R.id.pager);
this.mPager.setAdapter(mAdapter);
TabPageIndicator titleIndicator = (TabPageIndicator) findViewById(R.id.titles);
titleIndicator.setViewPager(mPager);
titleIndicator.setOnPageChangeListener(new OnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
mAdapter.getItem(position).onFocus();
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2)
{
}
@Override
public void onPageScrollStateChanged(int arg0)
{
}
});
これは MyAdapter クラスです:
public static class MyAdapter extends FragmentStatePagerAdapter
{
ArrayList<ExtendedFragment> tabs = new ArrayList<ExtendedFragment>();
String[] titles = new String[] { "FRAG1", "FRAG2", "FRAG3", "FRAG4", "FRAG5", "FRAG6"};
public MyAdapter(FragmentManager fm)
{
super(fm);
tabs.add(new frag1());
tabs.add(new frag2());
tabs.add(new frag3());
tabs.add(new frag4());
tabs.add(new frag5());
tabs.add(new frag6());
}
@Override
public int getCount()
{
return tabs.size();
}
@Override
public ExtendedFragment getItem(int position)
{
return tabs.get(position);
}
@Override
public CharSequence getPageTitle(int position)
{
return titles[position];
}
}
ExtendedFragment
メソッドを実装しonFocus()
、タブがフォーカスを取得したときにいくつかのアクションを実行する必要があるため、各フラグメントはそれをオーバーライドします。デバイスをスタンバイから再開してonFocus()
解雇されたときに、View
使用getView()
を取得しようとすると、 が取得されますnull
。
ビューが null になるのはなぜですか?