Android FragmentStatePagerAdapter复制片段';s游标加载程序结果
我正在制作一个简单的新闻应用程序 它的主要活动包含一个带有TabLayout的视图寻呼机,可承载新闻类别的不同片段 前两类是商业(第一类)体育(第二类) 问题是这两个片段的内容是相同的,即使使用了不同的加载程序,即“业务”选项卡显示体育新闻 但是当你刷第三个碎片时,问题就解决了。(可能是因为ViewPager重新加载了第一个片段。) 该片段实现了游标加载程序回调Android FragmentStatePagerAdapter复制片段';s游标加载程序结果,android,android-viewpager,android-cursorloader,fragmentstatepageradapter,Android,Android Viewpager,Android Cursorloader,Fragmentstatepageradapter,我正在制作一个简单的新闻应用程序 它的主要活动包含一个带有TabLayout的视图寻呼机,可承载新闻类别的不同片段 前两类是商业(第一类)体育(第二类) 问题是这两个片段的内容是相同的,即使使用了不同的加载程序,即“业务”选项卡显示体育新闻 但是当你刷第三个碎片时,问题就解决了。(可能是因为ViewPager重新加载了第一个片段。) 该片段实现了游标加载程序回调 公共类ArticleListFragment扩展了片段实现 LoaderManager.LoaderCallbacks 在Fragme
公共类ArticleListFragment扩展了片段实现
LoaderManager.LoaderCallbacks
在Fragment的#onCreate
中,我调用加载程序:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Bundle bundle = getArguments();
loader_id = bundle.getInt("id");
category = bundle.getString("category");
getLoaderManager().initLoader(loader_id, null, this);
}
Fragment的加载程序回调如下所示:
@Override
public void onLoadFinished(Loader<Cursor> cursorLoader, Cursor cursor) {
if(cursorLoader.getId() == loader_id){
if(cursor != null && cursor.getCount() > 0) {
Log.i("haha","id: " + cursorLoader.getId());
adapter.swapCursor(cursor);
}
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
@Override
public Fragment getItem(int position) {
ArticleListFragment fragment = ArticleListFragment.newInstance();
Bundle bundle = new Bundle();
bundle.putString("category", categories.get(position));
bundle.putInt("id",position);
fragment.setArguments(bundle);
return fragment;
}