Android_Fragment和activity传值(项目体现)
来源:互联网 发布:php 环境变量path 编辑:程序博客网 时间:2024/06/11 14:41
项目中使用fragment可以减轻activity的界面复杂度,与之带来的问题就是我们今天的博客内容,fragment给activity传递值.
- 项目需求描述,fragment中两个editext需要在改变之后把自己的值传递给当前的activity
国际惯例先来GIF看效果
UI分析:
实现的原理,fragment中定义回调接口,在合适的时候,被activity赋值,然后activity中实现回调接口,拿到fragment中的值,是不是很简单!
- fragment中定义回调接口,代码片段如下
// 这里是fragment用来传值的interfacepublic interface OnGetFragmentValueListener { void startAddChanged(String startAdd); void targetAddChanged(String targetAdd); }// 这里是fragment内部的成员变量,用来接受activity的赋值 private OnGetFragmentValueListener onGetFragmentValueListener;
2.刚才提到合适的时候,activity给我们的接口赋值,这个合适的时候就是fragment的onAttach方法,这里我们需要判断下activity传递的接口是不是我们需要的类型的
// 这就是合适的时候,判断如果activity传入的接口是我们定义的类型就赋值,否则抛出异常提示 @Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof OnGetFragmentValueListener) { onGetFragmentValueListener = (OnGetFragmentValueListener) activity; } else { throw new IllegalStateException("Your activity must impl the callback"); } }
3.我们的成员变量接口拿到了activity的赋值,接下来就是我们在需要的时候调用,刚才需求提到我们要拿到我们的出发地和目的地.
所以我们在两个ED控件变化之后,去调用接口
// ed 的textwatcher监听 大家都会的,在变化之后调用相对应的接口回调即可 public void afterTextChanged(Editable s) { switch ((int) editText.getTag()) { case ET_TAG._START: onGetFragmentValueListener.startAddChanged(s.toString()); break; case ET_TAG._TARGET: onGetFragmentValueListener.targetAddChanged(s.toString()); break; } }
4.马上成功,看我们的activity界面如何接受
先让activity实现fragment中定义的传值接口,so easy..
public class RouteLineActivity extends BaseActivity implements RouteLineTabView, RouteLineLocationFragment.OnGetFragmentValueListener { // 省略无关代码......// 这里实现fragment回调,拿到传递过来的值 @Override public void startAddChanged(String startAdd) { Logger.e("出发地:" + startAdd); T.show(this, "fragment传出发地:" + startAdd, 0); } @Override public void targetAddChanged(String targetAdd) { Logger.e("目的地:" + targetAdd); T.show(this, "fragment传目的地:" + targetAdd, 0); }// 到此fragment给activity传值结束// 无惊无险到了下班点..谢各位读者,欢迎拍砖!!!}
2 0
- Android_Fragment和activity传值(项目体现)
- Android_Fragment
- Android_Fragment
- Android_Fragment
- Android_Fragment
- Android_Fragment
- android_fragment
- Android_Fragment解析(2)+Activity通信+防重构_141010
- Fragment和Activity通信中体现的接口回调
- Android_Fragment详解
- Android_Fragment详解
- Android_Fragment详解
- android_Fragment简介
- Android_Fragment碎片
- android_fragment加载
- Activity生命周期在Framework层的体现
- 现代网络项目开发如何体现优势
- MVP在Android项目中的简单体现
- 模式、关系范式与关系运算
- Linux下软链接与硬链接的区别
- JS - 获取元素的值
- 模板:树状数组
- eclipse里自动生成getset方法
- Android_Fragment和activity传值(项目体现)
- ajax跨域post请求的java代理实现
- iOS开发集成百度地图
- Linux Recover MYSQL Password
- 使用gclient和代理下载Chromium代码
- 多重循环
- 算法总结
- 同一台服务器运行多套kamailio服务
- Android实现播放GIF动画的强大ImageView