Fragment和Activity之间传值的问题
16lz
2021-01-26
文章目录
- 从Activity传到Fragment中
- 通过setArguments()方法传值
- 通过获取对象进行传值
- 从Fragment传到Activity中
- Fragment之间传值
从Activity传到Fragment中
通过setArguments()方法传值
这个方法需要先实例化一个Bundle对象作为载体进行传值
Activity
//实例化FragmentFragment1 f = new Fragment1();//实例化一个Bundle对象Bundle bundle = new Bundle();//存入数据到Bundle对象中bundle.putString("msg1", "这是由Activity发往Fragment的数据");//调用Fragment的setArguments方法,传入Bundle对象f.setArguments(bundle);//添加、替换显示的Fragment......
上面前四步可以简写为
Fragment1 f = new Fragment1().setArguments(new Bundle() .putString("msg1", "这是由Activity发往Fragment的数据"));
Fragment1
Bundle b = getArguments();String msg1 = b.getString("msg1");//已经获取到值......
通过获取对象进行传值
Activity
public String sendMsg(){return "这是通过一个普通方法传递过去的消息";
在Fragment1的onAttach方法中
String msg = ((Activity的类型)context).sendMsg();//已经获取到值......
从Fragment传到Activity中
- 在Fragment中定义一个接口,在该接口中声明一个用于传递数据的方法
- 让Activity实现该接口,然后重写回调方法,获取传入的值,然后做处理
- 在自定义Fragment中,声明一个回调接口的引用
- 在onAttach方法中,为第三步的引用赋值
- 用引用调用传递数据的方法
Fragment1
//1.定义接口public interface MyListener{public void sendMsg(String msg);}//3.声明一个引用private MyListener ml;//4.为引用赋值public void onAttach(Context context) {super.onAttach(context);ml = (MyListener)getActivity();//传递消息方法,不一定在onAttach中实现ml.sendMsg("消息");}
Activity
//2.实现Fragment1的接口public void sendMsg(String msg) {Log.e("TAG", "Fragment传回的数据:" + msg);}
Fragment之间传值
Fragment之间的传值前提是它们之间有交互。在满足前条件提下想实现传值的话只需要实例化对应的Fragment对象,通过实例化对象调用对应的set方法就可以实现传值
更多相关文章
- Dagger2 基础入门与使用
- Android的Activity的启动流程分析
- Android(安卓)studio 使用 ImageView 加载 gif 文件
- Settings设置页面的Preference使用方法
- Android面试题整理(百度)
- Android(安卓)源码解析之Adapter和AdapterView与适配器模式
- 关于SearchView的一些小细节
- AsyncHttpClient的使用
- Android(安卓)锁屏和黑屏的广播消息