我有一個ActionBarActivity
其中我有一個ViewPager
。我期望在四頁(第一,第二,第三,第四頁)中看到四個(第一,第二,第三,四)碎片。FragmentPagerAdapter在ViewPager中顯示錯誤的片段
問題:
- 我看到的第一頁上的第二個片段。
- 然後我轉到第二頁。一無所獲。
- 然後我回到第一頁。看到第二個片段。
在ActionBarActvity
的onCreate()
,我有:
mViewPager = (ViewPager) findViewById(R.id.pager);
mPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), mGoodArrayListOfWords);
mViewPager.setAdapter(mPagerAdapter);
這是怎麼MyPagerAdapter
如下:
public class MyPagerAdapter extends FragmentPagerAdapter {
private ArrayList<String> mWords;
public MyPagerAdapter(FragmentManager fm, ArrayList<String> words) {
super(fm);
mWords = words;
}
@Override
public Fragment getItem(int position) {
String specificWord = mWords.get(position);
return MyFragment.newInstance(specificWord);
}
@Override
public int getCount() {
return mWords.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mWords.get(position);
}
}
我使用靜態工廠方法實例化一個MyFragment
和我做了沒有-arg構造函數私有:
public static MyFragment newInstance(String word) {
MyFragment fragment = new MyFragment();
Bundle args = new Bundle();
args.putString("WORD", word);
fragment.setArguments(args);
return fragment;
}
private MyFragment() {
super();
}
此外,在onViewOnCreated()
中,我得到了片段列表視圖的句柄,使用LoaderManager
到init()
加載器。我更新了LoaderManager.LoaderCallbacks<Cursor>
的onLoadFinished()
列表視圖的適配器。
我認爲這個問題是由於Loader
在碎片視圖創建後完成了他們的工作。
04-01 23:15:55.707 D/DebugTag﹕ getItem called
04-01 23:15:55.717 D/DebugTag﹕ getItem called
04-01 23:15:55.717 D/DebugTag﹕ on view created called
04-01 23:15:55.797 D/DebugTag﹕ on view created called
04-01 23:15:56.157 D/DebugTag﹕ on load finished called
04-01 23:15:56.177 D/DebugTag﹕ on load finished called
我將'onViewCreated'中的所有代碼移至'onCreateView'。一切正常。 – Jonas 2015-04-02 07:12:51