我的应用程序是一个新闻应用程序,包含新闻列表片段NewsDetailsFragment
(包含菜单、搜索等)。我使用的是单一活动模型,每个屏幕都由一个片段表示。CCD_ 2包括CCD_。
当我最初导航到NewsDetailsFragment
时,库被加载,现在如果我加载NewsDetailsFragment
片段的新实例,从菜单中选择另一个新闻,进行搜索等。第二个NewsDetailsFragment
中的ViewPager
不会显示图像,尽管Log
显示一切正常,数据在那里,适配器调用getView()。。。
因此,基本上,如果有1个加载的gallery ViewPager,那么更多的NewsDetailsFragment
将不会显示它们的gallery,只有当我按Back直到没有片段(因此没有ViewPager运行),只有在我打开NewsDetailsFragment
的新实例时,它才会加载gallery。
我希望我解释清楚。我已经尽力了,但现在却一无所知。
这就是加载后我将图库数据传递给ViewPager的方式(代码摘录自NewsDetailsFragment):
ViewPager pager = (ViewPager) getView().findViewById(R.id.vpAlbum);
ArticleAlbumAdapter adapter = new ArticleAlbumAdapter(getActivity().getSupportFragmentManager(), article.album);
pager.setAdapter(adapter);
文章相册适配器:
public class ArticleAlbumAdapter extends FragmentStatePagerAdapter
{
private List<String> urlList;
public ArticleAlbumAdapter(FragmentManager fm, List<String> urlList)
{
super(fm);
this.urlList = urlList;
Log.d("ArticleAlbumAdapter()", "urlList=" + urlList);
}
@Override
public Fragment getItem(int position)
{
Log.d("ArticleAlbumAdapter.getItem()", "position=" + position + ", url=" + urlList.get(position));
Fragment image = new AlbumImageFragment();
Bundle bundle = new Bundle();
bundle.putString("url", urlList.get(position));
bundle.putInt("pos", position);
image.setArguments(bundle);
return image;
}
@Override
public int getCount()
{
return urlList.size();
}
}
将当前Fragment的getChildFragmentManager()而不是活动的FragmentManager传递给ViewPager。根据您的描述,我假设创建第一个ViewPager的主屏幕也是一个Fragment。由于ViewPager是Fragment的子级,而它又在创建子Fragments,因此它需要子FragmentManager,而不是主FragmentManager。