我的問題是最初直接加載片段,也想調用用戶可見的方法片段。我可以在viewPager中使用setCurrentItem並使用onPageSelected?
對於加載正確的片段,我使用onCreate
中的viewPager.setCurrentItem()
。它運作良好。
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);
}
將方法稱爲片段電流,I使用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);
}
我可以分別做這兩件事。但是當我嘗試將兩者一起使用時,當我撥打我的fragment
時,我有一個"NullPointerException"
。
我看到onPageSelected
在我的Adapter
的getItem
之前被調用。
謝謝。第二項是完美的。新的問題是,他們沒有annimation的第一個片段負載,因爲'onPageSelected'沒有觸發其第一次打開網頁... – user1238096
這是一個錯誤的ViewPager「上pageSelected」不叫第一頁。請點擊此鏈接瞭解更多描述:http://code.google.com/p/android/issues/detail?編號= 27526 – karn
謝謝卡恩。但我認爲有一個解決方案來解決問題:( – user1238096