Android,android官網

來源:互聯網
上載者:User

Android,android官網
ViewPager+Fragment                                                                

讓Fragment成為ViewPager的一頁時,FragmentManager會一直儲存管理建立好了的Fragment,即使當前不是顯示的這一頁,Fragment對象也不會被銷毀,在後台默默等待重新顯示。但如果Fragment不再可見時,它的視圖層次會被銷毀掉,下次顯示時視圖會重新建立。

出於使用FragmentPagerAdapter  時,Fragment對象會一直存留在記憶體中,所以當有大量的顯示頁時,就不適合用FragmentPagerAdapter 了,FragmentPagerAdapter  適用於只有少數的page情況,像選項卡。這個時候你可以考慮使用FragmentStatePagerAdapter ,當使用FragmentStatePagerAdapter  時,如果Fragment不顯示,那麼Fragment對象會被銷毀,但在回調onDestroy()方法之前會回調onSaveInstanceState(Bundle outState)方法來儲存Fragment的狀態,下次Fragment顯示時通過onCreate(Bundle savedInstanceState)把儲存的狀態值取出來,FragmentStatePagerAdapter  比較適合頁面比較多的情況,像一個頁面的ListView。

動畫                                                                                    
1 FragmentTransaction ft = getFragmentManager().beginTransaction(); 2 ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 3 ft.replace(R.id.details, detail);        4 ft.addToBackStack(null); 5 ft.commit();

代碼設定的fade(漸層)效果。

1 FragmentTransaction ft = getFragmentManager().beginTransaction();2 //setCustomAnimations()必須位於replace()之前,否則效果不起所中。它的兩個參數分別為enter,exit的效果。系統目前提供兩個效果,分別為android.R.animator.fade_in和android.R.animator.fade_out3 ft.setCustomAnimations(R.animator.slide_in_left,R.animator.slide_out_right);4 ft.addToBackStack(null);5 ft.replace(R.id.details,"detail");6 ft.commit();

利用setCustomAnimations()

無參建構函式&傳參數                                                                

fragment一定要有一個無參建構函式,如果要給fragment傳參,一定要使用Bundle方式傳參,而不重載建構函式傳參,因為在fragment重建的使用不會執行這個帶參建構函式,而是執行無參建構函式。

 1 public static VechileFrag newInstance(Vehicle vehicle, String userId, boolean isAdd) { 2     VechileFrag mf = new VechileFrag(); 3     Bundle args = new Bundle(); 4     args.putString("userId", userId); 5     args.putBoolean("isAdd", isAdd); 6     args.putParcelable("vehicle", vehicle); 7     mf.setArguments(args); 8     return mf; 9 }10 11 12 @Override13 public void onCreate(Bundle savedInstanceState) {14     super.onCreate(savedInstanceState);15     Bundle args = getArguments();16     if (args != null) {17         userId = args.getString("userId");18         isAdd = args.getBoolean("isAdd");19         vehicle = args.getParcelable("vehicle");20         if (vehicle == null) {21             vehicle = new Vehicle();22         }23     }24 }    
Menu                                                                                   
1 @Override2     public void onCreate(Bundle savedInstanceState) {3         super.onCreate(savedInstanceState);4         setHasOptionsMenu(true);5     }

這樣之後,就可以調用onCreateOptionsMenu了。

儲存Fragment的切換                                                                 
Fragment fragment = fragments.get(i);if(!fragment.isAdded()) {    if(currentIndex!=-1)    fragments.get(currentIndex).onPause();    ft = fm.beginTransaction();    ft.setTransition(android.support.v4.app.FragmentTransaction.TRANSIT_FRAGMENT_FADE);    ft.add(R.id.framelayout,fragment);    // ft.addToBackStack(null);    ft.commit();    currentIndex=i;}else{    ft = fm.beginTransaction();    fragments.get(currentIndex).onPause();    ft.setTransition(android.support.v4.app.FragmentTransaction.TRANSIT_FRAGMENT_FADE);    ft.hide(fragments.get(currentIndex));    ft.show(fragments.get(i));    fragments.get(i).onStart();    ft.commit();    currentIndex=i;}

 

我是天王蓋地虎的分割線                                                             
Android軟體開發用什語言?

Javascript精通還做什麼android阿 汗.
 
Android軟體開發用什語言?

Javascript精通還做什麼android阿 汗.
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.