Android TabFragment中的ViewPager未再次加载

Android TabFragment中的ViewPager未再次加载,android,android-fragments,android-viewpager,android-nested-fragment,Android,Android Fragments,Android Viewpager,Android Nested Fragment,我正在尝试制作一个应用程序,该应用程序在选项卡主机的片段中包含一个ViewPager。一切顺利。我有我的标签栏,我可以切换标签。当我使用ViewPager切换到选项卡时,所有内容都正确显示 但是,当我用ViewPager离开此选项卡并返回此选项卡时,我的内容不会显示。如果我向一侧滚动两次,我会看到下一幅图像,如果我返回两次,我也会看到图像被加载(可能是offscreenloaded) 查看我的TabFragment在返回时是否正在重新实例化,但ViewPager中的片段没有 @Override

我正在尝试制作一个应用程序,该应用程序在
选项卡主机
的片段中包含一个
ViewPager
。一切顺利。我有我的标签栏,我可以切换标签。当我使用
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;
}}
@覆盖
已创建ActivityState上的公共无效(Bundle savedInstanceState){
mProjectText=(TextView)getView().findViewById(R.id.projectText);
mProjectText.setText(mActiveProject.getInspirationText());
mAdapter=newAlbumAdapter(getFragmentManager(),mActiveProject.getInspiration());
mPager=(ViewPager)getView().findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
super.onActivityCreated(savedInstanceState);
}
公共类AlbumAdapter扩展FragmentStatePagerAdapter{
私有数组列表;
公共相册适配器(FragmentManager fm、ArrayList项){
超级(fm);
this.ms=项目;
}
@凌驾
公共片段getItem(int位置){
返回AlbumContentFragment.newInstance(mItems.get(position));
}
@凌驾
public int getCount(){
返回mItems.size();
}
@凌驾
public int getItemPosition(对象){
返回位置\无;
}}

我发现了这个问题。我花了两天的时间,但嘿,已经修好了

而不是使用

mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
你应该使用

mAdapter = new AlbumAdapter(getChildFragmentManager(), mActiveProject.getInspiration());
5个字符到此为止。

我一直在搜索 这很长时间终于找到了解决方案。将页面适配器实例
FragmentPagerAdapter
更改为
FragmentStatePagerAdapter
例如:


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

老兄,你永远不会知道你今晚是怎么救了我的!顺便说一句,不要费心寻找像getSupportChildFragmentManager()这样的东西,因为getChildFragmentManager()是一种片段而不是活动的方法……完美的,伙计,如果没有你的帖子,你永远不会发现这一点。它是有效的,但如果我们再次打开片段,显示第一个选项卡listview需要1秒的延迟。有什么解决办法吗?谢谢!这是因为我们在片段中添加了一个片段,对吗?但是如果它在活动中,它应该是
getFragmentManager()
?这实际上让我的白领们感谢你们,在FragmentPagerAdapter到FragmentStatePagerAdapter之后,它开始工作了。这是一个简单而简短的回答。谢谢。在这个问题上花了很多时间,您的简单更改也起了作用。天哪,它解决了我的问题,但我在ViewPager中发现了碎片动态高度的问题,我的void OnMeasure在第二次显示时无法获得视图高度。正确答案是另一个,但这也有效。谢谢大家。虽然这是可行的,但它确实改变了片段的加载方式并保存在内存中。如果您想了解FragmentPagerAdapter的行为,另一种解决方案是正确的。您能解释一下为什么在
FragmentPagerAdapter
上使用
FragmentStatePagerAdapter
有效吗?
class PageAdapter extends FragmentStatePagerAdapter {