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.mzph.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…