上图!
再来两幅类图了解Activity与Fragment(注:类图是genmymodel画的)
再来本章重点
图 Activity生命周期及回调方法
图 Fragment生命周期及回调方法
【知识点】
·启动、关闭Activity:
Acitivity启动其他Activity有如下两种方法
startActivity(Intent intent): 启动其它Activity
startActivityForResult(Intent intent,int requestCode): 以指请求码启动Activity,而且程序将会得到新启动Activity的结果(重写onActivityResult(...)方法获取)
相对的,也有两个关闭Activity的方法对应这两个启动的方法
finish():结束当前Activity
finishActivity(int requestCode):结束以startActivityForResult(Intent intent,int requestCode)方法启动的Activity
·Fragment与Activity之间交互信息:
尽管Fragment的实现是独立于Activity的,可以被用于多个Activity,但是每个Activity所包含的是同一个Fragment的不同的实例。Fragment可以调用getActivity()方法很容易的得到它所在的Activity的对象,然后就可以查找Activity中的控件们(findViewById())。同样的,Activity也可以通过FragmentManager的方法查找它所包含的Frament们。
·Fragment与Activity之间传递数据:
①Activity向Fragment传递数据:在Activity中创建Bundle数据包,并调用Fragment的setArguments(Bundle bundle)方法即可将Bundle数据包传给Fragment。
②Fragment向Activity传递数据或Activity需要在Fragment运行中进行实时通信:在Fragment中定义一个内部回调接口,再让包含该Fragment的Activity实现该回调接口,这样Fragment即可调用该回调方法将数据传给Activity。
【问题】为书做一些批注
·问:本章书中有一处代码是用来LayoutInflater加载了/res/layout/目录下的布局文件,LayoutInflater?
答:在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。
具体作用:
①对于一个没有被载入或者想要动态载入的界面,都需要使用
LayoutInflater.inflate()来载入;
②对于一个已经载入的界面,就可以使用Activiyt.findViewById()方法来获得其中的界面元素。
·问:本章书Fragment事务,在调用commit()之前,开发者可以调用addToBackStack()将事务添加到back栈,问back栈?
答:有一篇文章讲的很清晰,《任务Task及回收栈back
stack介绍》。