android - 重新创建包含 fragment 时未加载 ViewPager 中的 fragment

标签 android android-fragments android-viewpager fragmentpageradapter

我有一个 Fragment MyFragment 和一个包含更多 FragmentViewPager。它在我第一次加载 MyFragment 时正常工作,但如果我返回并重新创建它,则 ViewPager 中的 Fragments 不会显示,因为方法 FragmentPagerAdapter.getItem 未被调用。

我在用

怎么了?

import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v13.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
...

public class MyFragment extends Fragment {

    private ViewPager pager;
    private MyPagerAdapter adapter;

    private List<Fragment> fragmentList = new ArrayList<Fragment>();

    public MyFragment() {}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                 Bundle savedInstanceState) {
        return inflater.inflate(R.layout.my_fragment_layout, container, false);
    }

    public void onViewCreated(View v, Bundle savedInstanceState) {
        super.onViewCreated(v, savedInstanceState);

        indicators = (PagerSlidingIndicator) v.findViewById(R.id.indicators);
        pager = (ViewPager) v.findViewById(R.id.pager);

        Fragment fragment1 = new Fragment1();
        fragmentList.add(fragment1);

        Fragment fragment2 = new Fragment2();
        fragmentList.add(fragment2);

        Fragment fragment3 = new Fragment3();
        fragmentList.add(fragment3);

        adapter = new IndicatorPagerAdapter(getFragmentManager());
        pager.setAdapter(adapter);
    }

    public class MyPagerAdapter extends FragmentPagerAdapter {

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public int getCount() {
            return fragmentList.size();
        }

        @Override
        public Fragment getItem(int position) {
            return fragmentList.get(position);
        }
    }
}

最佳答案

如果您正在使用嵌套 fragment (“我有一个 Fragment MyFragment 和一个包含更多 fragment 的 ViewPager”),您需要使用 getChildFragmentManager(),而不是 getFragmentManager(),在设置您的 FragmentPagerAdapter 时。

关于android - 重新创建包含 fragment 时未加载 ViewPager 中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808225/

相关文章:

Android 主屏幕快捷方式删除监听器?

Android Studio - 有没有办法直接从 git/svn 添加模块而不将其存储在本地

android - 如何启用/禁用android中另一个 fragment 的按钮?

android - 显示 fragment 的 Activity 按钮

android - 一次查看包含 3 个项目的寻呼机

android - 在移动设备上停止旋转

android - 使用 Glide 在 MenuItem 中加载远程图像

android - 即使 listView 中有元素,listView.SeptEmptyView 也会始终显示

java - 操作栏拉伸(stretch)选项卡

android - onPageChangeListener() 如何知道代码针对哪个页面?