当前位置:K88软件开发文章中心编程语言APP编程Android01 → 文章内容

5.1 Fragment基本概述

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-12 6:26:25

gmentManager().beginTransaction().replace(R.id.LinearLayout1, f1).commit(); } else { Fragment2 f2 = new Fragment2(); getFragmentManager().beginTransaction().replace(R.id.LinearLayout1, f2).commit(); } } }3.Fragment管理与Fragment事务4.Fragment与Activity的交互可能有的朋友不喜欢看图,接下来用文字介绍下吧:1)组件获取Fragment获得Activity中的组件: getActivity().findViewById(R.id.list);Activity获得Fragment中的组件(根据id和tag都可以):getFragmentManager.findFragmentByid(R.id.fragment1);2)数据传递①Activit传递数据给Fragment:在Activity中创建Bundle数据包,调用Fragment实例的setArguments(bundle)从而将Bundle数据包传给Fragment,然后Fragment中调用getArguments获得Bundle对象,然后进行解析就可以了②Fragment传递数据给Activity在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口,Fragment就可以通过回调接口传数据了,回调,相信很多人都知道是什么玩意,但是写不出来啊,网上的一百度"fragment传数据给Activity",全是李刚老师的那个代码,真心无语算了,这里就写下局部代码吧,相信读者一看就懂的了:Step 1:定义一个回调接口:(Fragment中)/*接口*/ public interface CallBack{ /*定义一个获取信息的方法*/ public void getResult(String result); } Step 2:接口回调(Fragment中)/*接口回调*/ public void getData(CallBack callBack){ /*获取文本框的信息,当然你也可以传其他类型的参数,看需求咯*/ String msg = editText.getText().toString(); callBack.getResult(msg); } Step 3:使用接口回调方法读数据(Activity中)/* 使用接口回调的方法获取数据 */ leftFragment.getData(new CallBack() { @Override public void getResult(String result) { /*打印信息*/ Toast.makeText(MainActivity.this, "-->>" + result, 1).show(); } }); 总结下方法:->在Fragment定义一个接口,接口中定义抽象方法,你要传什么类型的数据参数就设置为什么类型;->接着还有写一个调用接口中的抽象方法,把要传递的数据传过去->再接着就是Activity了,调用Fragment提供的那个方法,然后重写抽象方法的时候进行数据的读取就可以了!!!③Fragment与Fragment之间的数据互传其实这很简单,找到要接受数据的fragment对象,直接调用setArguments传数据进去就可以了通常的话是replace时,即fragment跳转的时候传数据的,那么只需要在初始化要跳转的Fragment后调用他的setArguments方法传入数据即可!如果是两个Fragment需要即时传数据,而非跳转的话,就需要先在Activity获得f1传过来的数据,再传到f2了,就是以Activity为媒介~示例代码如下:FragmentManager fManager = getSupportFragmentManager( );FragmentTransaction fTransaction = fManager.beginTransaction();Fragmentthree t1 = new Fragmentthree();Fragmenttwo t2 = new Fragmenttwo();Bundle bundle = new Bundle();bundle.putString("key",id);t2.setArguments(bundle); fTransaction.add(R.id.fragmentRoot, t2, "~~~"); fTransaction.addToBackStack(t1); fTransaction.commit(); 5.走一次生命周期图:思前想后还是决定要带大家简单的走一趟生命周期图,加深大家对Fragment生命周期的理解:①Activity加载Fragment的时候,依次调用下面的方法:onAttach -> onCreate -> onCreateView -> onActivityCreated -> onStart ->onResume②当我们弄出一个悬浮的对话框风格的Activity,或者其他,就是让Fragment所在的Activity可见,但不获得焦点onPause③当对话框关闭,Activity又获得了焦点:onResume④当我们替换Fragment,并调用addToBackStack()将他添加到Back栈中onPause -> onStop -> onDestoryView!!注意,此时的Fragment还没有被销毁哦!!!⑤当我们按下键盘的回退键,Fragment会再次显示出来:onCreateView -> onActivityCreated -> onStart -> onResume⑥如果我们替换后,在事务commit之前没有调用addToBackStack()方法将Fragment添加到back栈中的话;又或者退出了Activity的话,那么Fragment将会被完全结束,Fragment会进入销毁状态onPause -> onStop -> onDestoryView -> onDestory -> onDetach本节小结:本节跟大家讲解了以下Fragment一些基本的概念以及简单的用法,相信大家会慢慢喜欢上Fragment的,因为篇幅的关系,本节就写这么多,下一节我们带大家来写一些关于Fragment的常用实例,敬请期待,谢谢~

上一页  [1] [2] 


5.1 Fragment基本概述