52

我正在尝试制作一个在 Fragment 中具有 a 的应用程序,ViewPager该 Fragment 是TabHost. 一切正常。我有我的标签栏,我可以切换标签。当我使用 切换到选项卡时ViewPager,所有内容都正确显示。

但是,只要我离开此选项卡ViewPager并返回此选项卡,我的内容就不会显示。如果我滚动到一边两次,我确实会看到我的下一张图像,如果我返回两次,我也会看到图像已加载(可能是offscreenloaded)。

看到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;
}}

应用程序的模型

4

3 回答 3

192

我发现了问题。我花了两天时间,但是,嘿,它是固定的。

而不是使用

mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());

你应该使用

mAdapter = new AlbumAdapter(getChildFragmentManager(), mActiveProject.getInspiration());

5个字符就这么多了。

于 2013-06-07T11:57:01.930 回答
49

我一直在寻找这个终于找到了一个解决方案。将您的页面适配器实例FragmentPagerAdapter更改为FragmentStatePagerAdapter 示例:

class PageAdapter extends FragmentStatePagerAdapter {
于 2015-05-05T10:41:39.823 回答
8

你应该使用getChildFragmentManager()而不是getFragmentManager()FragmentStatePagerAdapter()而不是。FragmentPagerAdapter()希望它对某人有用。

于 2019-04-30T04:48:02.777 回答