我的应用程序是一个新闻应用程序,带有新闻列表片段NewsDetailsFragment
(包含菜单、搜索等)。我使用的是单一活动模型,每个屏幕都由一个片段表示。NewsDetailsFragment
包括一个ViewPager
(画廊)。
当我最初导航到NewsDetailsFragment
时,画廊已加载,现在如果我加载片段的新实例,NewsDetailsFragment
从菜单中选择另一个新闻,进行搜索等。ViewPager
第二个中的NewsDetailsFragment
将不会显示图像,尽管Log
显示一切正常,数据在那里,适配器调用 getView()...
所以基本上如果有 1 个加载的画廊 ViewPager,NewsDetailsFragment
只有当我按下 Back 直到我没有片段(因此没有 ViewPager 运行)时,才会再显示他们的画廊,只有当我打开它的新实例NewsDetailsFragment
时才会加载画廊.
我希望我解释清楚。我尽力了,现在我一无所知。
这就是我在加载后将画廊数据传递给 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();
}
}