在View寻呼机中手动锁定电话后处理片段

时间:2017-07-19 06:38:24

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

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

所以问题是当我在TabLayout中处于片段2时,屏幕关闭后它将移动到片段一默认值)。那我怎么解决这个问题

这是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);
        }
    }
   }

1 个答案:

答案 0 :(得分:-1)

使用FragmentStatePagerAdapter代替FragmentPagerAdapter。阅读文档hereFragmentStatePagerAdapter仅存储savedInstanceState个碎片,并在失去焦点时销毁所有碎片。