第5天Fragment高级进阶
- 一.Fragment的回退栈
- 二.Fragment之间的传值
方式一.Fragment之间的传值:Handler
方式二:Fragment之间的传值:接口回调 - 三.案例实现
- 四.多个fragment嵌套
一.Fragment的回退栈
Fragment2 f2 = new Fragment2();
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction tx = fm.beginTransaction();
tx.replace(R.id.fl, f2);
//将当前的事务添加到了回退栈
tx.addToBackStack(null);
二.Fragment之间的传值
主要涉及到一个方法是getArguments()和setArguments(). 一个设置属性值,一个去取属性值.
步骤: 要传的值,放到bundle对象里; 在Activity中创建该Fragment的对象fragment,通过调用
fragment.setArguments()传递到fragment中; 然后更新fragment.
在该Fragment中通过调用getArguments()得到bundle对象,就能得到里面的值。
activity的xml的布局文件
fragment的xml布局文件
完整版的fragment
完整版的Activity
fragment 给 activity传值
第一种:
在Activity中调用getFragmentManager()得到fragmentManager,,调用findFragmentByTag(tag)或者通过findFragmentById(id)
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = fragmentManager.findFragmentByTag(tag);
第二种:
通过回调的方式,定义一个接口(可以在Fragment类中定义),接口中有一个空的方法,在fragment中需要的时候调用接口的方法,值可以作为参数放在这个方法中,然后让Activity实现这个接口,必然会重写这个方法,这样值就传到了Activity中.
Activity中的代码
Activity中的xml文件
fragment中的代码
fragment的xml文件
fragment 给 fragment 传值
第一种:
动态创建的fragment通过findFragmentByTag得到另一个的Fragment的对象,这样就可以调用另一个的方法了。
静态创建的fragment通过findFragmentById得到另一个的Fragment的对象,这样就可以调用另一个的方法了。