android fragment与activity接口传值
16lz
2021-01-26
最近做项目需要做一个文件管理器的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(); }
完结
更多相关文章
- xe5 android tts(Text To Speech)
- Android(安卓)JsBridge源码学习
- Android(安卓)刷新页面更新数据方法探究
- android日记-
- 【073】Android(安卓)数据存储(SQLite)
- Android(安卓)ListView字母索引(仿微信通讯录列表)
- 一起学android opengl之光照
- Android(安卓)ContentProvider共享数据
- Android视频流解码