Fragment实例

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情


参考自 http://blog.csdn.net/flowingflying/article/details/12505453 系列八篇文章

很详细,在这总结一些自己需要的

一,关于生命周期


因为Fragment有两种引入方式,两种引入方式生命周期不尽相同(这里主要比较的是开启Fragment时的不同)

1,由布局文件xml中指定类名称而引入Fragment
生命周期为:

activity:oncreate->setContentView->                                                                     ->setContentView->oncreate                         

fragment:                                       onInflate->onAttach->onCreate->onCreateView                                          ->onActivityCreate->onStart->onResume


注:setContentView为oncreate中的,首尾的setContentView和oncreate分别代表其开始和结束 


2,另外一种是在Fragment类中代码引入Fragment
生命周期为:
fragment:onAttach-->onCreate-->onCreateView-->onActivityCreate-->onStart-->onResume


不同之处:1,引入方式2中就没有onInflate方法了

                 2,引入方式2的fragment生命周期与activity没有关系了

                 3,引入方式1的setContentView的开始和结束,oncreate的结束分别为fragment生命周期的三个切割点



从程序的运行输出也可以看出activity和fragment的生命周期了



完整的activity和fragment的生命周期的对比



二,关于两种引入fragment的方法

1,由布局文件xml中指定类名称而引入Fragment(把android:name替换为class也可以)

<fragment android:name="com.wei.flowingflying.pro.ProFragment.TitleFragment"
        android:id="@+id/titles" 
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
2,另外一种是在Fragment类中代码引入Fragment

一般在Fragment类的onCreateView中引入

//注意,我们并不需要在代码中将子容器(引入的详情view)放入FrameLayout(container)中,系统会自动完成,如果我们将两者关联,反而会出现异常。
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		showInfo("onCreateView() is called.." + getActivity());
		showInfo("   container is " + container);
		//即第三个参数置为false,不让详情view和container关联起来
		View v = inflater.inflate(R.layout.details, container,false);
		TextView tv = (TextView)v.findViewById(R.id.text1);
		tv.setText(BooksInfo.TITLES[mIndex] + "\n\n" +BooksInfo.DIALOGUE[mIndex]);
		showInfo("   return  " + v);
		return v;
	}

三,fragment参数传递

在当前fragment传递参数可以直接使用setArguments(bundle)和getArguments()获取bundle

在当前fragment设置或获取其他fragment或activity的参数,需要new fragment再fragment.setArguments(bundle)和fragment.getArguments()

                Bundle b = getArguments();
		
		if(b != null){
			mCurCheckPosition = b.getInt("index", -1);
			showInfo("  arg : index " + mCurCheckPosition);
		}else{
			b = new Bundle();
			b.putInt("index", mCurCheckPosition);
			setArguments(b);
		}

四,一些有关于fragment的方法

1,添加Fragment的方法

fragmentTransaction.add(R.id.fragment_container, fragment); 

fragmentTransaction.commit();

add()的第一个参数是fragment要放入的ViewGroup,由resource ID指定, 第二个参数是需要添加的fragment,一旦FragmentTransaction做了改变,为了使改变生效,必须调用commit()


2,替换Fragment的方法

fragmentTransaction.replace(R.id.fragment, fragment); 

replace()的两个参数分别是原fragment的id和新的fragment


3,加入BackStack的方法(加入堆栈中,相当于添加到activity的界面管理器中)


addToBackStack(tag)

如果是add方法则加入到堆栈的是新的fragment,如果是replace方法则是原fragment

把Fragment添加到BackStack后,点击返回时就会回到上一个显示的Fragment

如果不添加就直接退出了activity


                DetailFragment detail = DetailFragment.newInstance(index);
		
		FragmentTransaction ft = getFragmentManager().beginTransaction();
		
		ft.replace(R.id.details, detail);
		ft.addToBackStack("detail");
		ft.commit();

实例代码(主要是多了些注释)http://download.csdn.net/detail/superjunjin/8554121

原文章代码 http://blog.csdn.net/flowingflying/article/details/12505453 

另外:代码实现了官方文档的效果,关于横竖屏切换的,横屏显示title和detail 竖屏为只显示title 点击title再显示详情效果(看代码注释或原文章就懂了)


另外两个例子的代码也放这了

http://download.csdn.net/detail/superjunjin/8536659

http://download.csdn.net/detail/superjunjin/8536759

Android 面试题之 Fragment 使用+实例,致Android高级工程师的一封信 android.app.Fragment在API 级别 11 中 添加,已在API 级别 28 中弃用。 阅读详情

相关推荐

Fragment的三个例子

1、fragment代替ActivityGroup 2、fragment之间传递数据 3、FragmentTabHost的使用

Android fragment的使用案例

效果图:两个点击事件,显示不同的fragment布局默认是如下图,点击页面一也如下图点击页面二如下图:Android Fragment的生命周期是与其所在的Activity紧密相关的。当一个Fragment被添加到Activity中时,它将经历一系列的生命周期回调方法。以下是Fragment生命周期的主要阶段需要注意的是,Fragment的生命周期受其所属的Activity影响。例如,当Activity进入暂停状态时,其中的所有Fragment也会进入暂停状态。

afufufufu的博客 974

Android Fragment使用之实例演示

Fragment是Android honeycomb 3.0新增的概念,在如何使用Android Fragment中做了关于Fragment的详细介绍。本文则主要是通过实例的方式让大家更直观的了解Fragment的使用方法。        首先贴上实例的运行效果截图:        效果图的左边是一个列表,右边是列表item的详情。        先看一下布局文件(layout): XML/HTML代码 <?xml version=“1.0″ encoding=“utf-8″?> <LinearLayout xmlns:android=“http://schemas.android.co

Fragment简单示例

Fragment是SDK3.0以后才出来的新特性,网上关于它的例子很多,我学习的时候也查阅过很多种类型的,但是我发现没有哪个是我看完就自己会编的,现在我发上来我认为至少我一看就会编的程序上来供大家参考,当然程序肯定是我自己写的,首先先创建3个类,名字自己随便取,当然也要创建与之匹配3个布局文件,名字也随便,下面上代码: FragmentDemo的Java代码:import android.app

qiang_xi的专栏 1246

底部菜单栏之Fragment的详细介绍和使用方法

由于TabActivity在Android4.0以后已经被完全弃用,那么我就不再浪费口水继续讲解它了,取而代之的是FragmentFragment是Android3.0新增的概念,Fragment翻译成中文是碎片的意思,不过却和Activity十分的相似,这一篇我花大量的篇幅来详细的讲解Fragment的介绍和使用方法。 一、Fragment的基础知识介绍 1.1概述 1.1.

非著名程序员 1万+

Android组件:Fragment实例

Fragment初学案例

leelit笔记本 2092

Android Fragment实例

Fragment是Android honeycomb 3.0新增的概念,在Android——Fragment介绍、Android Fragment使用、Android FragmentManage FragmentTransaction介绍中做了关于Fragment的详细介绍。这一片主要通过一个实例了解Fragment的使用。        先看下实例效果图:

215

Fragment创建多个fragment实例

1,申明fragment 实例代码 Bundle bundle = new Bundle(); bundle.putString("opt", navigateIndustry.getOpt().toString()); SelectedIndustryFragment selectedOneFragment = SelectedIndustryFragment.newInstance(

xianwenzhang的专栏 1313

关于fragment的一个实例

在安卓学习过程中,fragment是非常重要的部分,掌握这部分也是很必须的,感觉之前学习的那个实例非常好,所以特意记一下,也算是温故而知新吧。 当然先复习一下fragment的生命周期: onattacth 获得要附着的activity oncreate 创建fragment实例对象 oncreateView 创建出fragment视图,该方法返回一个视图对象(View),这个就

TopWilling的博客 695

Activity得到当前fragment实例

Activity得到当前fragment实例 许多童鞋会用到fragment,利用activity去管理,而由于可能涉及到动态加载fragment或者利用java反射机制得到新的fragment去填充布局,导致很多时候我们需要去获取得到当前fragment实例。例如下例:调用switchContent方法需要传入当前fragment和切换的fragment来保证fragment不被多次创建。利用sh

neuyuandaima的博客 1万+

Fragment简单实例

Fragment简单实例

childhooding的专栏 611

Fragment使用实例

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34061042的博客 324

防止fragment反复实例

android fragment 实例化 replace show

alberthgh的博客 1178

android fragment的作用,实例化新的Android Fragment的最佳做法

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?我已经看到了两种在应用进程中实例化新片段的一般做法:Fragment newFragment = new MyFragment();和Fragment newFragment = MyFragment.newInstance();第二个选项使用静态方法newInstance()和 通常 包含以下方法。public sta...

weixin_39886547的博客 423

android fragment的使用方法,Android Fragment使用之实例演示

Fragment是Android honeycomb 3.0新增的概念,在如何使用Android Fragment中做了关于Fragment的详细介绍。本文则主要是通过实例的方式让大家更直观的了解Fragment的使用方法。首先贴上实例的运行效果截图:效果图的左边是一个列表,右边是列表item的详情。先看一下布局文件(layout):XML/HTML代码android:orientation=“h...

weixin_35411443的博客 372

Fragment简介和使用实例

转载请注明出处:http://blog.csdn.net/yegongheng/article/details/22811157 Fragment 是什么        今天我们来学习一个比较重要的组件--FragmentFragment在应用开发中应用得非常的频繁,特别是在开发一些需要兼容手机设备、平板设备和智能电视等大屏幕设备的应用,Fragment发挥着重要的作用。那说了这么多

叶功恒的博客专栏 2万+
上一篇: Activity的生命周期
下一篇: android项目的.project文件
superjunjin
博客等级 码龄17年 600粉丝 133原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值