0

我有一個活動中有6個片段,我創建爲 我想從一個滑動到另一個,並且需要它們不被解散,但是onyl hide /顯示viewpager。6片段被ViewPager隱藏/顯示而不被解僱

有沒有辦法派生viewpager類或SectionsPagerAdapter來做到這一點。

我已經添加

mViewPager.setOffscreenPageLimit(6); 

,但沒有奏效。當從第4個片段滑到第3個或第5個時,該應用程序崩潰。

我simpified並改名片段類代碼相關部分獲取代碼可讀性

@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; 
    } 
} 

回答

1

通過FragmentSatePagerAdaper 擴展你的部分尋呼機適配器以及 mViewPager.setOffscreenPageLimit(6);

+0

@ Rahul.thanks但它並沒有解決我的問題。我同時發現,崩潰是由於第四個片段使用了xml; – Lotfi

+0

Lotfi