我正在尝试制作一个在片段中具有ViewPager的应用程序,该应用程序是TabHost的一部分。
一切都很好。我有我的tabbar,我可以切换标签。当我使用ViewPager切换到选项卡时,所有内容都正确显示。但是,只要我将此选项卡与ViewPager一起退出并返回此选项卡,我的内容就不会显示。如果我滚动到两侧,我会看到我的下一张图像。如果我回去两次,我也会看到图像被加载(可能是屏幕加载的)当我返回时,看到我的TabFragment正在重新实例化,但ViewPager中的片段不是。
我已经包含了一个屏幕样机和一些代码。
有人可以帮忙吗?
干杯!
@Override
public void onActivityCreated(Bundle savedInstanceState) {
mProjectText = (TextView) getView().findViewById(R.id.projectText);
mProjectText.setText(mActiveProject.getInspirationText());
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
mPager = (ViewPager)getView().findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
super.onActivityCreated(savedInstanceState);
}
public class AlbumAdapter extends FragmentStatePagerAdapter {
private ArrayList<ProjectContent> mItems;
public AlbumAdapter(FragmentManager fm, ArrayList<ProjectContent> items) {
super(fm);
this.mItems = items;
}
@Override
public Fragment getItem(int position) {
return AlbumContentFragment.newInstance(mItems.get(position));
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}}
答案 0 :(得分:156)
我发现了问题。我花了两天时间,但是,嘿,这是固定的。
而不是使用
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
你应该使用
mAdapter = new AlbumAdapter(getChildFragmentManager(), mActiveProject.getInspiration());
这么多5个字符。
答案 1 :(得分:2)
您应该使用1,4
而不是getChildFragmentManager()
和getFragmentManager()
而不是FragmentStatePagerAdapter()
。希望对某人有用。