android fragment与activity接口传值

最近做项目需要做一个文件管理器的cordova插件,用到了activity与fragment,那fragment怎么传递数据给activity呢?就是用接口实现。

1.定义接口(回调接口)

    public interface FragmentACallBack {//定义接口
        void setData(JSONObject data);
    }

2.在fragment onAttach方法里注册接口

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        fragmentACallBack = (FragmentACallBack) getActivity();//注册接口
    }

3.接口传递数据 在需要传递数据的地方调用

listAdapter.setOnClickMy(new FolderDataAdapter.OnMyClick() {
            @Override
            public void monMyClick(int id) {
                LogUtil.w("获取到的值="+id);
                FileInfo finfo = data.get(id);
                File file = new File(finfo.getFilePath());
                if(file.exists()){
                    JSONObject jsonObject = new JSONObject();
                    try {
                        jsonObject.put("fileName",finfo.getFileName());
                        jsonObject.put("fullPath",finfo.getFilePath());
                        jsonObject.put("fileSize", FileUtil.getFileSize(file));
                        fragmentACallBack.setData(jsonObject);//接口传递数据
                    } catch (JSONException e) {
                        e.printStackTrace();
                        fragmentACallBack.setData(null);
                    }
                }else{
                    fragmentACallBack.setData(null);
                    LogUtil.w("不存在");
                }
            }
        });

4.activity实现接口,首先activity接入接口

implements FragmentACallBack会生成对应方法

然后在对应方法里接收回调的数据

    @Override
    public void setData(JSONObject data) {//实现接口
        LogUtil.w("activity获取到的参数="+data);
        try {
            Intent intent=new Intent();
            intent.putExtra("fileName",data.getString("fileName"));
            intent.putExtra("fullPath",data.getString("fullPath"));
            intent.putExtra("fileSize",data.getString("fileSize"));
            setResult(RESULT_OK,intent);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        //关闭该activity,把返回值传回到cordovaPlugin插件
        this.finish();
    }

完结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值