Android開發之ViewPager+Fragment

yungfan發表於2016-03-29

使用步驟

  • 1、Activity的佈局檔案
<android.support.v4.view.ViewPager 
     android:id="@+id/viewpager"     
     android:layout_width="wrap_content"    
     android:layout_height="wrap_content"   
     android:layout_gravity="center" >  
 </android.support.v4.view.ViewPager>
  • 2、載入要顯示的Fragment,這裡要注意,匯入的全部是
    android.support.v4.app.Fragment,也就是v4相容包下的Fragment類,至於為什麼,看步驟3
Fragment1 f1 = new Fragment1();
Fragment2 f2 = new Fragment2();
Fragment3 f3 = new Fragment3();
fragmentContainter = new ArrayList<Fragment>();    
fragmentContainter.add(f1);
fragmentContainter.add(f2);
fragmentContainter.add(f3);
  • 3、用FragmentPagerAdapter關聯上面的Fragment和ViewPager,
    FragmentPagerAdapter (android.support.v4.app.FragmentPagerAdapter)
    繼承自 PagerAdapter。相比通用的 PagerAdapter,該類更專注於每一頁均為 Fragment 的情況。我們只需要實現 getCount() 和 getItem()即可,從getItem()可以看出,它返回的是v4的Fragment,所以2中的問題答案就在這裡了~~
pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager())
        {

            @Override
            public int getCount()
            {

                return fragmentContainter.size();
            }

            @Override
            public android.support.v4.app.Fragment getItem(int arg0)
            {
                return fragmentContainter.get(arg0);
            }
        });

這樣就可以實現滑動Fragment

重要的話

  • PageAdapter 是 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 的基類,可以將上面的替換成FragmentStatePagerAdapter 。

  • FragmentStatePagerAdapter 和 FragmentPagerAdapter 的區別: FragmentPagerAdapter使用時,每一個生成的 Fragment 都將儲存在記憶體之中,而 FragmentStatePagerAdapter 只保留了當前顯示的Fragment,其他劃過的Fragment離開視線後,就會被銷燬;而在頁面需要顯示時,再生成新的例項(可以通過列印Fragment的生命週期來檢視,這裡就不貼上了)。這麼實現的好處就是當擁有大量的頁面時,不必在記憶體中佔用大量的記憶體。


相關文章