FrameLayout《第一行代码Android》学习笔记

一   FrameLayout的生命周期

FrameLayout与Activity的生命周期比较相似

FrameLayout的状态

1   运行状态

FrameLayout是可见的,并且她所关联的Activity正处于运行状态,该FrameLayout也处于运行状态

2   暂停状态

当Activity进入停止状态时,与她关联的FrameLayout也会进入到暂停状态

3   停止状态

当Activity进入停止状态时,相应的FrameLayout就会进入停止状态,或者是在事务提交之前调用addToBackStack()方法,然后通过调用FrameLayoutTransaction的remove().replace()方法将FrameLayout从Activity中移除。

4   销毁状态

firstFragment fragment = (firstFragment)getFragmentManager().findFragmentById(R.id.first_fragment);

当相关联的Activity被销毁时,FrameLayout也会被销毁。或者通过调用FrameLayoutTransaction的remove().replace()方法将FrameLayout从Activity中移除,但前提是在事务提交之前没有调用addToBackStack()方法


FrameLayout比Activity多的几个回调方法

1    onAttach()

当碎片和活动建立关联的时候调用

2   onCreateView()

为碎片创建视图(加在布局)时调用

3   onActivityCreated()

确保与碎片相关联的活动一定已经创建完毕的时候调用

4   onDestoryView()

当与碎片关联的视图被移除的时候调用

5    onDetach()

当碎片和活动解除关联的时候调用


二   动态添加Fragment

firstFragment fragment = new firstFragment ();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTraansaction();
transaction.replace(R.id.fragment_layout, fragment);
transaction.commit();

动态添加碎片主要分为5步

1    创建待添加的碎片的实例

2    获取FragmentManager

3   开启一个事务

4   向容器内加入碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例

5   提交事务


将事务添加到返回栈中

在transaction.commit();之前添加transaction.addToBackStack(null);  该方法可以接收一个名字用于描述返回栈的状态,一般传入null即可。

把Fragment放入返回栈后,点击Back键时,程序会销毁该Fragment,但不会销毁与之关联的Activity。


三   Fragmeng和Activity之间通信

在Activity中调用Fragment中的方法

firstFragment fragment = (firstFragment) getFragmentManager().findFragmentById(R.id.first_fragment);

在Fragment中调用Activity中的方法

MainActivity activity = (MainActivity)getActivity();

你可能感兴趣的:(Android学习笔记)