【问题标题】:handling fragment after manually phone lock in View pager在查看寻呼机中手动锁定电话后处理片段
【发布时间】:2017-07-19 06:38:23
【问题描述】:

实际上,我正在实现一个 TabLayout,所以在主 MainActivity 中,我加载了 TabFragment 并在 tabFragment(包含两个 fragments)中使用了 ViewPager。

所以问题是当我在 TabLayout 中的片段二上并且屏幕关闭后它将移动到 片段一默认片段)。那么我该如何解决这个问题

这是 TabFragment 代码:

public class TabFragment extends Fragment {


    public TabFragment() {
        // Required empty public constructor
    }
    public static TabLayout tabLayout;
    public static ViewPager viewPager;
    public static int int_items = 2 ;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View x=inflater.inflate(R.layout.content_main_menu,null);
        tabLayout=(TabLayout) x.findViewById(R.id.tabs);
        viewPager =(ViewPager) x.findViewById(R.id.viewpager);
        setupViewPager(viewPager);
        //viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
        viewPager.setOffscreenPageLimit(1);
        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                tabLayout.setupWithViewPager(viewPager);
            }
        });
    return x;
    }


    private void setupViewPager(ViewPager viewPager) {
        MyAdapter adapter = new MyAdapter(getChildFragmentManager());
        adapter.addFragment(new HomeFragment(), "Fragment One");
        adapter.addFragment(new Offers(), "fragment Two");

        viewPager.setAdapter(adapter);
    }
    class MyAdapter extends FragmentPagerAdapter{
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();
        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

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

        @Override
        public int getCount() {
            return mFragmentList.size();
        }
        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
   }

【问题讨论】:

  • “屏幕熄灭后”是什么意思?
  • @techDigi 你能把你的主要活动发布在Resume() 代码上吗?
  • 我只是重写 onResume() 方法并调用 super
  • 尝试 getFragmentManager() 而不是 getChildFragmentManager()
  • @AndyDeveloper 我试过但还是同样的问题

标签: android android-fragments android-viewpager android-tablayout


【解决方案1】:

使用FragmentStatePagerAdapter 而不是FragmentPagerAdapter。阅读文档hereFragmentStatePagerAdapter 只存储片段的savedInstanceState,并在失去焦点时销毁所有片段。

【讨论】:

  • 还是同样的问题
  • 你确定使用 getChildFragmentManager() 吗?尝试使用 getFragmentManager()
  • 为什么你拒绝我的更改,首先检查你的链接不起作用,所以我在那个链接中进行了更改@droidev
猜你喜欢
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多