日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android FragmentManage FragmentTransaction介绍

發布時間:2025/3/8 Android 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android FragmentManage FragmentTransaction介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FragmentManage:

FragmentManager能夠實現管理activity中fragment.?通過調用activity的getFragmentManager()取得它的實例.

FragmentManager可以做如下一些事情: 1、使用findFragmentById() (用于在activity layout中提供一個UI的fragment)或findFragmentByTag() ?? (適用于有或沒有UI的fragment)獲取activity中存在的fragment 2、將fragment從后臺堆棧中彈出, 使用 popBackStack() (模擬用戶按下BACK 命令). 3、使用addOnBackStackChangeListener()注冊一個監聽后臺堆棧變化的listener.

FragmentTransaction:

????? FragmentTransaction對fragment進行添加,移除,替換,以及執行其他動作。 從 FragmentManager 獲得一個FragmentTransaction的實例 : FragmentManager fragmentManager = getFragmentManager();??FragmentTransaction?fragmentTransaction = fragmentManager.beginTransaction();
? 每一個事務都是同時要執行的一套變化.可以在一個給定的事務中設置你想執行的所有變化,使用諸如 add(), remove(), 和 replace().然后, 要給activity應用事務, 必須調用 commit().
? 在調用commit()之前, 你可能想調用 addToBackStack(),將事務添加到一個fragment事務的back stack.?這個back stack由activity管理, 并允許用戶通過按下 BACK 按鍵返回到前一個fragment狀態.
? 舉個例子, 這里是如何將一個fragment替換為另一個, 并在后臺堆棧中保留之前的狀態: // Create?new?fragment and transaction??Fragment newFragment =?new?ExampleFragment();??FragmentTransaction transaction = getFragmentManager().beginTransaction();??// Replace whatever is in the fragment_container view with?this?fragment,??// and add the transaction to the back stack??transaction.replace(R.id.fragment_container, newFragment);?transaction.addToBackStack(null);??// Commit the transaction??transaction.commit();
? 在這個例子中, newFragment 替換了當前layout容器中的由R.id.fragment_container標識的fragment.通過調用 addToBackStack(), replace事務被保存到back stack, 因此用戶可以回退事務,并通過按下BACK按鍵帶回前一個fragment.
? 如果添加多個變化到事務(例如add()或remove())并調用addToBackStack(), 然后在你調用commit()之前的所有應用的變化會被作為一個單個事務添加到后臺堆棧, BACK按鍵會將它們一起回退.
? 添加變化到 FragmentTransaction的順序不重要, 除以下例外:
  • 必須最后調用 commit().
  • 如果添加多個fragment到同一個容器, 那么添加的順序決定了它們在view hierarchy中顯示的順序.
當執行一個移除fragment的事務時, 如果沒有調用 addToBackStack(), 那么當事務提交后, 那個fragment會被銷毀,并且用戶不能導航回到它. 有鑒于此, 當移除一個fragment時,如果調用了 addToBackStack(), 那么fragment會被停止, 如果用戶導航回來,它將會被恢復.
? 提示: 對于每一個fragment事務, 你可以應用一個事務動畫, 通過在提交事務之前調用setTransition()實現.
? 調用 commit() 并不立即執行事務.恰恰相反, 它將事務安排排期, 一旦準備好, 就在activity的UI線程上運行(主線程).如果有必要, 無論如何, 你可以從你的UI線程調用 executePendingTransactions() 來立即執行由commit()提交的事務.?但這么做通常不必要, 除非事務是其他線程中的job的一個從屬.
? 警告: 你只能在activity保存它的狀態(當用戶離開activity)之前使用commit()提交事務.
? 如果你試圖在那個點之后提交, 會拋出一個異常.這是因為如果activity需要被恢復, 提交之后的狀態可能會丟失.對于你覺得可以丟失提交的狀況, 使用 commitAllowingStateLoss().

?


? ? ?本文轉自xyz_lmn51CTO博客,原文鏈接:http://blog.51cto.com/xyzlmn/817250,如需轉載請自行聯系原作者


總結

以上是生活随笔為你收集整理的Android FragmentManage FragmentTransaction介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。