首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewPager隐藏/显示的6个片段未被驳回

ViewPager隐藏/显示的6个片段未被驳回
EN

Stack Overflow用户
提问于 2016-12-31 14:05:46
回答 1查看 25关注 0票数 0

我有6个片段,在我创建的一个活动,因为我想从一个滑动到另一个,并需要他们不被解雇,但单细胞隐藏/显示的视图。

是否有一种方法可以派生出viewpager类或SectionsPagerAdapter来实现这一点。

我已经补充了

代码语言:javascript
复制
mViewPager.setOffscreenPageLimit(6); 

但没起作用。当从第4段滑动到第3段或第5段时,应用程序会崩溃。

我的代码的相关部分简化并重命名了片段类,使代码具有可读性。

代码语言:javascript
复制
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // create the fragment once for all !
    if (savedInstanceState == null) {
        fragment1 = Fragment1.newInstance(1);
        fragment2 = Fragment2.newInstance(2);
        fragment3 = Fragment3.newInstance(3);
        fragment4 = Fragment4.newInstance(4);
        fragment5 = Fragment5.newInstance(5);
        fragment6 = Fragment6.newInstance(6);
     }
    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.container);
    mViewPager.setAdapter(mSectionsPagerAdapter);
    mViewPager.setOffscreenPageLimit(6);
    });


    public static class Fragment1 extends Fragment {
    private static final String ARG_SECTION_NUMBER = "section_number";

    public Fragment1() {
    }

    public static Fragment1 newInstance(int sectionNumber) {
        Fragment1fragment = new Fragment1();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);
        fragment.setRetainInstance( true);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_1, container, false);
        TextView textView = (TextView) rootView.findViewById(R.id.section_label);
        // "Main Frag"
        textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
        // The activity is about to become visible again, recalcule  
    }
}



   public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        //return PlaceholderFragment.newInstance(position + 1);
        switch (position)
        {
            case 0 : return fragment1;   //instead  of Fragment1.newInstance(1);
            case 1 : return fragment2;
            case 2 : return fragment3; 
            case 3 : return fragment4;
            case 4 : return fragment5;
            case 5 : return fragment6;
            default: return null;
        }
    }

    @Override
    public int getCount() {
        // Show 6 total pages.
        return 6;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return "SECTION 1";
            case 1:
                return "SECTION 2";
            case 2:
                return "SECTION 3";
            case 3:
                return "SECTION 4";
            case 4:
                return "SECTION 5";
            case 5:
                return "SECTION 6";
        }
        return null;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-31 15:00:43

通过FragmentSatePagerAdaper扩展节寻呼机适配器并设置mViewPager.setOffscreenPageLimit(6);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41408968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档