亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android基礎之使用Fragment控制切換多個頁面

2020-04-11 12:04:23
字體:
來源:轉載
供稿:網友

今天講解一下Fragment的控制,主要是切換View和頁面替換等操作。還有就是如何獲取Fragment的管理對象,以及與Activity的通信方式。

1、管理Fragment
要在activity中管理fragment,需要使用FragmentManager. 通過調用activity的getFragmentManager()取得它的實例.

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

2、處理Fragment事務
關于在activity中使用fragment的很強的一個特性是:根據用戶的交互情況,對fragment進行添加、移除、替換以及執行其他動作。提交給activity的每一套變化被稱為一個事務,可以使用在FragmentTransaction中的 API 處理。我們也可以保存每一個事務到一個activity管理的backstack,允許用戶經由fragment的變化往回導航(類似于通過 activity往后導航)。

從 FragmentManager 獲得一個FragmentTransaction實例:

復制代碼 代碼如下:

FragmentManager fragmentManager =getFragmentManager();
FragmentTransaction fragmentTransaction =fragmentManager.beginTransaction();

每一個事務都是同時要執行的一套變化。可以在一個給定的事務中設置你想執行的所有變化,使用諸如 add()、remove()和 replace()。然后, 要給activity應用事務,必須調用 commit()。

在調用commit()之前,你可能想調用 addToBackStack(),將事務添加到一個fragment事務的backstack。這個back stack由activity管理, 并允許用戶通過按下 BACK按鍵返回到前一個fragment狀態。

復制代碼 代碼如下:

//創建修改實例
Fragment newFragment = newExampleFragment();
FragmentTransaction transaction =getFragmentManager().beginTransaction();
// Replace whatever is in thefragment_container view with this fragment,
// and add the transaction to the backstack
transaction.replace(R.id.fragment_container,newFragment);
transaction.addToBackStack(null);
//提交修改
transaction.commit();

上面是如何將一個fragment替換為另一個,并在后臺堆棧中保留之前的狀態。在這個例子中,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()提交的事務。但這么做通常不必要,除非事務是其他線程中的任務的一個從屬。
警告:你只能在activity保存它的狀態(當用戶離開activity)之前使用commit()提交事務.
 
3、與Activity通信
盡管Fragment被實現為一個獨立于Activity的對象,并且可以在多個activity中使用,但一個給定的fragment實例是直接綁定到包含它的activity的。 特別的fragment可以使用 getActivity() 訪問Activity實例, 并且容易地執行比如在activity layout中查找一個view的任務。如下面的代碼:

復制代碼 代碼如下:

View listView =getActivity().findViewById(R.id.list);

同樣地,activity可以通過從FragmentManager獲得一個到Fragment的引用來調用fragment中的方法,使用findFragmentById() 或 findFragmentByTag()。
復制代碼 代碼如下:

ExampleFragment fragment =(ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);

4、總結
最后需要說一下Fragment的例子,Android官方已經提供了Fragment的各種使用的Demo例子,在我們SDK下面的API Demo里面就包含了Fragment的各種使用例子,需要看Demo的朋友,直接看API Demo那個程序就可以了,不用到處去找。里面分開不同功能,實現了不同的類??梢愿鶕枰榭淳唧w代碼。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲激情电影中文字幕| 国产精品永久免费视频| 色婷婷久久一区二区| 欧美中文在线字幕| 国产欧美中文字幕| 91中文字幕在线| 亚洲国产又黄又爽女人高潮的| 亚洲精品mp4| 欧美激情精品久久久久久大尺度| 久久久精品免费| 日韩综合视频在线观看| 亚洲国产成人精品久久| 日韩欧美在线视频日韩欧美在线视频| 欧美又大又硬又粗bbbbb| 97在线看免费观看视频在线观看| 精品国产自在精品国产浪潮| 欧美精品videosex极品1| 久久精品欧美视频| 91老司机精品视频| 欧美性xxxx| 欧美xxxx18国产| 久久好看免费视频| zzjj国产精品一区二区| 国产婷婷色综合av蜜臀av| 久久深夜福利免费观看| 久久国产精品亚洲| 国产成人高清激情视频在线观看| 亚洲精品中文字幕有码专区| 国产精品香蕉在线观看| 色婷婷成人综合| 欧美精品在线观看91| 国产在线拍偷自揄拍精品| 国产精品视频色| 8x海外华人永久免费日韩内陆视频| 国产精品91久久久久久| 91久久精品国产91久久| 丰满岳妇乱一区二区三区| 日韩欧美在线播放| 久久不射电影网| 欧美亚洲国产成人精品| 亚洲老板91色精品久久| 久久综合免费视频| 欧美麻豆久久久久久中文| 日韩精品极品视频免费观看| 日韩一区二区三区xxxx| 欧美日韩国产成人在线| 亚洲国产精品大全| 日韩av在线电影网| 欧美国产日韩二区| 国产成人97精品免费看片| 亚洲自拍偷拍一区| 亚洲国产一区自拍| 精品久久久久久久久中文字幕| 6080yy精品一区二区三区| 亚洲欧美日韩一区在线| www.欧美三级电影.com| 国产精品视频久| 国产成人亚洲精品| 亚洲激情在线视频| 国产精品亚洲欧美导航| 亚洲欧美另类人妖| 国产手机视频精品| 欧美激情videoshd| 91中文字幕在线观看| 国产精品一区久久| 国产啪精品视频网站| 日韩日本欧美亚洲| 国产成人综合精品| 欧美有码在线视频| 日韩久久免费视频| 欧美在线观看网站| 国产亚洲欧洲黄色| 成人精品视频久久久久| 日韩在线视频国产| 精品国产福利在线| www日韩中文字幕在线看| 国产精品久久久av| 亚洲第一色中文字幕| 亚洲已满18点击进入在线看片| 日产精品久久久一区二区福利| 亚洲精品国产suv| 97婷婷大伊香蕉精品视频| 国产一区二区在线免费| 欧美激情国产日韩精品一区18| 久久免费视频网站| 91亚洲永久免费精品| 久久久精品国产亚洲| 亚洲女人天堂成人av在线| 最近中文字幕2019免费| 疯狂欧美牲乱大交777| 精品成人69xx.xyz| 日韩国产一区三区| 97色在线视频| 欧美黑人一级爽快片淫片高清| 亚洲精品v天堂中文字幕| 欧美成aaa人片在线观看蜜臀| 亚洲日本中文字幕免费在线不卡| 奇米影视亚洲狠狠色| 国产精品免费福利| 尤物tv国产一区| 欧美国产亚洲精品久久久8v| 精品人伦一区二区三区蜜桃网站| 亚洲大尺度美女在线| 欧美日韩在线视频观看| www.日韩.com| 国产日韩欧美在线观看| 国产精品扒开腿做| 欧美日本在线视频中文字字幕| 久久亚洲影音av资源网| 韩国三级日本三级少妇99| 久久久国产一区二区| 亚洲天堂av高清| 亚洲免费一在线| 国产精品丝袜白浆摸在线| 亚洲成人精品在线| 久久久久久国产精品三级玉女聊斋| 国产精品日韩精品| 成人免费淫片视频软件| 最近2019年中文视频免费在线观看| 亚洲色图综合久久| 亚洲区一区二区| 日韩av在线播放资源| 国产精品午夜国产小视频| 国产亚洲精品久久| 美女999久久久精品视频| 色老头一区二区三区在线观看| 日韩国产精品视频| 中文字幕亚洲一区二区三区五十路| 亚洲欧美色婷婷| 国产精品91免费在线| 亚洲精品国产欧美| 亚洲jizzjizz日本少妇| 日韩精品免费在线观看| 国产中文字幕91| 国产91精品视频在线观看| 91黑丝高跟在线| 久久久久久91香蕉国产| 欧美美女操人视频| 在线播放国产一区二区三区| 亚洲自拍小视频| 日韩福利伦理影院免费| 亚洲国产欧美在线成人app| 日韩欧美中文在线| 欧美与欧洲交xxxx免费观看| 97精品一区二区视频在线观看| 性夜试看影院91社区| 亚洲国产私拍精品国模在线观看| 日韩大片免费观看视频播放| 91影院在线免费观看视频| 91tv亚洲精品香蕉国产一区7ujn| 欧美夜福利tv在线| 欧美性xxxxxxx| 久久久久久久久爱| 69av视频在线播放| 国产亚洲人成网站在线观看| 日韩欧美在线视频观看| www.日韩视频| 国产成人精品视频在线观看| 亚洲乱码国产乱码精品精| 亚洲高清一区二| 国产精品久久久久久中文字| 性欧美xxxx交| 欧美成人三级视频网站| 国产97免费视|