Android Fragment

Fragment在3.0后增加:android.app.Fragment

在v4的兼容包里也有。

一般為了兼容性還是可能會用:android.support.v4.app.Fragment


生命周期:

onAttach,onCreate,onCreateView,onActivityCreated,onStart,onResume,

onPause,onStop,onDestroyView,onDestroy,onDetach

三種類別:

DialogFragment

對話框式的Fragments,能夠將一個fragments 對話框并到activity 管理的fragments back stack 中,同意用戶回到 該 dialog?????

ListFragment

類似于ListActivity 的效果。而且還提供了ListActivity類似的onListItemCLick和setListAdapter等功能。內部維護一個ListView

使用布局android.R.layout.list_content

PreferenceFragments

類似于PreferenceActivity .能夠創建類似PAD的設置界面。


使用Fragment

1. xml中使用

<fragmentclass="com.stone.fragment.FragmentDemoActivity$TitlesFragment"   // 用成 android:name 也行android:id="@+id/titles"android:layout_width="0px"android:layout_height="match_parent"android:layout_weight="1"/>

Fragment派生類 實現onCreateView() {inflater.inflate(... 將一個layout增加到fragment中) 返回View },

2. 使用代碼加入Fragment

FragmentManager fragmentManager = getFragmentManager(); //3.0以上在Activity中使用

FragmentManager fragmentManager = getSupportFragmentManager(); //使用V4包,應使用FragmentActivity

FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

Fragment01dynamicFragment = new Fragment01();

fragmentTransaction.add(R.id.ll_frag_two,dynamicFragment); //有 layout---將fragment 增加到layout-ll_frag_two 中

fragmentTransaction.add(R.id.ll_frag_three,new Fragment01(),"kkk"); //?“kkk” -----tag

fragmentTransaction.add(dynamicFragment,"without_layout"); //無 layout

fragmentTransaction.commit();//? 提交。每段事務 都須要begintransaction

fragmentManager.findFragmentById();

fragmentManager.findFragmentByTag("tag"); //無界面的能夠用 tag作唯一標識取出

fragmentManager.popBackStack(); // activity的后退棧中彈出fragment(這能夠模擬后退鍵引發的動作)。返回void

fragmentManager.addOnBackStackChangedListerner(); // 注冊一個偵聽器以監視后退棧的變化

fragmentManager.executePendingTransactions(); // 馬上運行事務

fragmentTransaction.setTransition(transit); // 設置跳轉動畫

fragmentTransaction.addToBackStack("options name"); //將之前的操作增加后退棧中,這時按back鍵,彈出fragment。恢復到之前的狀態

3. 事務的注意

??? 通過 add(),remove(), replace() 等 來操作?

警告:你僅僅能在activity處于可保存狀態的狀態時,比方running中。onPause()方法和onStop()方法之前提交事務。否則會引發異常。這是由于fragment??????????

的狀態會丟失。假設要在可能丟失狀態的情況下提交事務。請使用commitAllowingStateLoss()

4. ?參數傳遞

與Activity交互,在 實現類中,getActivity();? // 得到其所在的activity

fragment間傳參:fragment.setArguments(bundle);

5. Activity與Fragment共享事件

在Fragment中定義回調接口,Activity中傳入。

回退棧的說明

fragmentTransaction.addToBackStack 和fragmentManager.popBackStack 的樣例:

例1

ft?=fm.beginTransaction();

ft.add(new asdf(),"frag1");

ft.addToBackStack("back1");

ft.commit();


ft.add(new asdff(),"frag2");

ft.commit(); //這時按back,彈出backStack中的 back1-frag1

例2

ft?=fm.beginTransaction();

ft.add(new asdf(),"frag1");

ft.addToBackStack("back1");

ft.commit();


ft.add(new asdff(),"frag2");

ft.addToBackStack("back2");

ft.commit();//這時按back,先彈出back2,再按back。才彈出back1

例3

ft?=fm.beginTransaction();

ft.add(new asdf(),"frag1");

ft.addToBackStack("back1");

ft.commit();

fm.popBackStack();//這里已經將back1彈出棧


ft.add(new asdff(),"frag2");

ft.addToBackStack("back2");

ft.commit();// 這時按back。僅僅彈出back2


附 “在同一layout中切換Fragment(不又一次載入fragment)” 代碼:

private FragmentManager manager;private FragmentTransaction transaction;private Fragment currentFrag;/*** @param displayFrag 要顯示的fragment* * @author stone*/private void display(Fragment displayFrag) {if (currentFrag != displayFrag) {transaction = manager.beginTransaction();if (displayFrag == null) return;if (displayFrag.isAdded()) {transaction.show(displayFrag);} else {transaction.add(R.id.fl_content, displayFrag);}if (currentFrag != null) {transaction.hide(currentFrag);}currentFrag = displayFrag;transaction.commit();}}



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456214.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1020. 月餅 (25)

1020. 月餅 (25) 月餅是中國人在中秋佳節時吃的一種傳統食品&#xff0c;不同地區有許多不同風味的月餅。現給定所有種類月餅的庫存量、總售價、以及市場的最大需求量&#xff0c;請你計算可以獲得的最大收益是多少。 注意&#xff1a;銷售時允許取出一部分庫存。樣例給出的情形…

【機器學習】opencv-視頻中的人臉檢測

本次在圖片識別的程度上增添了視頻識別 原理就是在圖片的基礎上進行操作 每毫秒進行下一幀的人臉解析識別&#xff0c;時間可自行設置 import numpy as np import cv2win cv2.namedWindow(dzd,cv2.WINDOW_NORMAL) cv2.resizeWindow(dzd,640,200) rose cv2.imread(./rose.jp…

scan8[16+2*4]的內容

scan8確實不好理解&#xff0c;解答如下&#xff1a; static const int x264_scan8[162*4] { /* Luma */ 41*8, 51*8, 42*8, 52*8, 61*8, 71*8, 62*8, 72*8, 43*8, 53*8, 44*8, 54*8, 63*8, 73*8, 64*8, 74*8, /* Cb */ 11*8, 21*8, 12*8, 22*8, /…

React 產品實現 -任務管理工具“氫”

原文地址&#xff1a;https://zhuanlan.zhihu.com/p/...&#xff0c;歡迎轉載 &#xff1a;-&#xff09;? 關于 其實對于這個專欄的訂閱用戶感到非常抱歉&#xff0c;已經停更很久了&#xff0c;也沒啥特別的理由就是懶 orz&#xff01;不對&#xff0c;畫風不能這樣開頭&…

通過curl獲取網頁訪問時間

curl -w %{time_namelookup}:%{time_connect}:%{time_starttransfer}:%{time_total}:%{speed_download}"\n" "https://www.google.com" 轉載于:https://www.cnblogs.com/fanxuanhui-linux/p/6581292.html

【numpy】20道numpy題目

1、創建一個長度為10的一維全為0的ndarray對象&#xff0c;然后讓第5個元素等于1 import numpy as npndarry np.zeros(10) ndarryarray([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])ndarry[4]1 ndarryarray([0., 0., 0., 0., 1., 0., 0., 0., 0., 0.])2、創建一個元素為從10到4…

ffmpeg_intra_pred_mode問題.pdf

ffmpeg_intra_pred_mode問題.pdf文章

【R】語言第一課-----安裝

安裝R和Rstuido軟件 R語言是用于統計分析&#xff0c;圖形表示和報告的編程語言和軟件環境&#xff1b;Rstudio是編輯、運行R語言的最為理想的工具之一。 1、官網下載R安裝包 下載地址為&#xff1a;https://cran.r-project.org 進入鏈接&#xff0c;如下圖所示&#xff0c…

面向對象基礎知識整理

1、什么是對象&#xff1f; 什么是類&#xff1f; 對象是可以看的見摸得著的&#xff0c;對象可以是任何東西&#xff0c;比如水杯&#xff0c;書&#xff0c;手機等。準確的說&#xff0c;對象是一個自包含的實體&#xff0c;用一組可識別的特性和行為標識的。 類就是具有相同…

Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes values. (ie, from left to right, level by level). For example: Given binary tree {3,9,20,#,#,15,7}, 3/ \9 20/ \15 7return its level order traversal as: [[3],[9,20],[15,7] ] 解題思路:能夠…

鍵盤事件相關

轉自下面兩個鏈接&#xff1a;http://www.cnblogs.com/starof/p/6558581.html http://www.cnblogs.com/cathsfz/archive/2011/05/29/2062382.html 在 JavaScript 中監聽 IME 鍵盤輸入事件 在 JavaScript 中監聽用戶的鍵盤輸入是很容易的事情&#xff0c;但用戶一旦使用了輸入…

【R】語言第二課----- 變量的使用方法

num1<-c(9.1,8.2,7.3) num2<-1:10 char<-c(a,b,c) #單引號or雙引號都可以 logit<-c(TRUE,FALSE,T,F) c(1,a,TRUE) sex<-c(F,M,F,M) sex sexf<-factor(sex) sexf num1[1]<-100 #索引一定要加方括號 num1[c(1,3)]<-c(99.9,77.7) num1[c(T,F,T)] num1[-2]…

Petuum - Careers

Petuum - CareersCloudformation

【R】語言第三課----矩陣

#矩陣 ?matrix m<-matrix(1:6,nrow 2,ncol3,dimnames list(c(r1,r2),c(c1,c2,c3))) m#默認按列排列 m<-matrix(1:6,nrow 2,ncol3,byrow T,dimnames list(c(r1,r2),c(c1,c2,c3)))m class(m) m[1,1] m[1,]# 相當于 m[c(T,F),] m[,1] m[r1,]m[1,] <- c(100,99,98…

誰說菜鳥不會數據分析--讀書筆記

如果看不清可以下載下來&#xff0c;打開&#xff0c;放大。僅供參考。 轉載于:https://www.cnblogs.com/sunshinewang/p/6591772.html

[MySQL 5.6優化] --order by limit x,x 優化

簡介&#xff1a;order by limit x ,x 在實際工作中有各種業務需求要有order by的排序&#xff0c;有時候處理不好則會造成系統宕機&#xff01;原理&#xff1a;a.通過索引來獲取排序b.通過內部算法獲取排序&#xff1a; 案例具體SQL&#xff1a; SELECT c.order_price orderP…

【R】語言第四課----讀取文件

install.packages("readxl") getwd() setwd("E:/作業4") library(readxl) tianmao<-read_excel(tianmaoTV.xlsx,skip1)#把第一行跳過&#xff0c;直接從第二行開始讀取 #創建新變量 tianmao[total_sales]<-tianmao$current_price*tianmao$month_sale…

Html.Partial和Html. RenderPartial用法

Html.Partial和Html. RenderPartial用法Html.partial和RenderPartial的用法與區別Html.partial和RenderPartial都是輸出html片段&#xff0c;區別在于Partial是將視圖內容直接生成一個字符串并返回&#xff08;相當于有個轉義的過程&#xff09;&#xff0c;RenderPartial方法是…

算術編碼簡單研究

算術編碼 是一種無損數據壓縮方法&#xff0c;也是一種熵編碼的方法。和其它熵編碼方法不同的地方在于&#xff0c;其他的熵編碼方法通常是把輸入的消息分割為符號&#xff0c;然后對每個符號進行編碼&#xff0c;而算術編碼是直接把整個輸入的消息編碼為一個數&#xff0c;一個…

Thinkphp5 還有這種操作?

2019獨角獸企業重金招聘Python工程師標準>>> 在 _initialize 中取出 控制器名和方法名 define(CONTROLLER_NAME,Request::instance()->controller()); define(MODULE_NAME,Request::instance()->module()); define(ACTION_NAME,Request::instance()->actio…