私の問題は、最初にフラグメントを直接ロードすることです。また、メソッドフラグメントを呼び出したいのですが、ユーザーに表示されます。
正しいフラグメントをロードするために、で使用viewPager.setCurrentItem()
しonCreate
ます。それはうまくいきます。
FragmentActivity code
:
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mTabsAdapter = new TabsPlayerAdapter(this, mRadioList);
mMainViewPager.setAdapter(mTabsAdapter);
mMainViewPager.setOnPageChangeListener(this);
mMainViewPager.setCurrentItem(2);
}
フラグメントCurrentと呼ばれるメソッドには、を使用しonPageSelected viewPager
ます。それはうまくいきます。
FragmentActivity code
:
@Override
public void onPageSelected(int position) {
Log.d(TAG, "onPageSelected - position: " + position);
((PlayerFragment) mTabsAdapter.mSparseFragment.get(position))
.startAnnimation();
}
FragmentStatePagerAdapter code:
@Override
public Fragment getItem(final int position) {
Log.d(TAG, "getItem - position: " + position);
Bundle args = new Bundle();
args.putString("num", mRadioModel.get(position).name);
mSparseFragment.put(position, Fragment.instantiate
(mContext,PlayerFragment.class.getName(), args));
return mSparseFragment.get(position);
}
FragmentStatePagerAdapter code :
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
Log.d(TAG, "destroyItem - position: " + position);
mSparseFragment.remove(position);
}
私はこれら2つのことを別々に行うことができます。しかし、この2つを一緒に使用しようとすると、"NullPointerException"
自分のを呼び出すときに時間がありますfragment
。
私はそれが私onPageSelected
の前に呼ばれているのを見ました。getItem
Adapter