TextVersion_07_Fragment相关细节

来源:互联网 发布:上饶网络教育报名时间 编辑:程序博客网 时间:2024/04/30 06:27

Fragment相关细节


FragmentActivity怎么传值

 

Fragment Activity绑定之后,

Fragment 中可以直接通过getActivity() 方法获取到其绑定的Activity对象,

这样就可以调用 Activity 的方法

 


 

Activity中可以获取Fragment实例

FragmentManager fragmentManager = getFragmentManager();

Fragment fragment = fragmentManager.findFragmentByTag(tag);

Fragment fragment = fragmentManager.findFragmentById(id);

 

获取到Fragment之后可以调用Fragment的方法

 

还可以用setArguments方法

 

fragment.setArguments(Bundle),将数据绑定到Fragment

 

 

 

 

 

Fragment的生命周期

 

 

 

 

Fragmentreplaceadd方法的区别

 

Fragment本身是没有replaceadd方法的

这里说的其实是FragmentManagerreplaceadd方法

 

我们经常使用的一个架构就是

通过RadioGroup切换Fragment

每一个Fragment就是一个功能模块

 

通过两种方法切换的小例子:

case R.id.rb_1:

rb_1.setBackgroundColor(Color.RED);

transaction.show(fragment1);

// transaction.replace(R.id.fl, fragment1, "Fragment1");

break;

case R.id.rb_2:

rb_2.setBackgroundColor(Color.YELLOW);

// transaction.replace(R.id.fl, fragment2, "Fragment2");

transaction.show(fragment2);

break;

case R.id.rb_3:

rb_3.setBackgroundColor(Color.BLUE);

// transaction.replace(R.id.fl, fragment3, "Fragment3");

transaction.show(fragment3);

break;

 

 

解析Fragment切换

 

Fragment的容器是一个FrameLayout,

add的时候是把所有的Fragment一层一层叠加到了FrameLayout

replace的话就是把其他的Fragment都去除掉,

然后把当前的Fragment添加到容器中

 

一个Fragment容器只能添加一个Fragment种类

如果多次添加会报异常

replace的话就无所谓,随便切换

 

因为通过add的方法添加的Fragment,每个Fragment只能添加一次

所以要hideshow两个方法结合使用

这个过程中Fragment的生命周期没有变化

 

通过replace切换,每次都会执行上一个FragmentonDestroyView

新的Fragment会执行onCreateView,onStart,onResume

 

 

 

 

 

0 0