android-Fragment和Activity通信:将Fragment中的数据传入Activity
2015-09-05 11:02
453 查看
有时候我们需要Fragment和Activity进行通信,说白了,就是将Activity的值传入Fragment或者将Fragment中的值传入Activity。从Activity将数据传入Fragment,可以通过一下代码实现,假设WorkerChoose是我们的一个Fragment:
也就是说我们通过调用fragment.setArguments(args); 来实现数据传入,在onCreate()方法中获取传入的数据:
那么如何将Fragment中的数据传入Activity中哪?首先我们需要定义个接口,比如这样:
接口定义好了,我们需要在Fragment中实例化这个接口,而且在onAttach()方法中有一个强制类型转换:
如果activity没有实现接口,fragment会抛出 ClassCastException 异常。正常情形下,getWorker成员会保持一个到activity的GetWorker实现的引用,因此WorkerChoose可以通过调用在GetWorker接口中定义的方法分享事件给activity。这个地方是关键!
最后,在使用Fragment的Activity中实现该接口的相应方法,即可使Fragment中的数据传入Activity中!
public static WorkerChoose newInstance(String workersOrder) { WorkerChoose fragment = new WorkerChoose(); Bundle args = new Bundle(); args.putString(WORKERS_ORDER, workersOrder); fragment.setArguments(args); return fragment; }
也就是说我们通过调用fragment.setArguments(args); 来实现数据传入,在onCreate()方法中获取传入的数据:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { workersOrder = getArguments().getString(WORKERS_ORDER); } }
那么如何将Fragment中的数据传入Activity中哪?首先我们需要定义个接口,比如这样:
public interface GetWorker { public void onChoosen(GroupWorker mGroupWorker); }
接口定义好了,我们需要在Fragment中实例化这个接口,而且在onAttach()方法中有一个强制类型转换:
public class WorkerChoose extends Fragment { private GetWorker getWorker; ...... @Override public void onAttach(Activity activity) { super.onAttach(activity); try { getWorker = (GetWorker) activity; } catch (ClassCastException e) { throw new ClassCastException( activity.toString() + " must implementOnArticleSelectedListener"); } } }
如果activity没有实现接口,fragment会抛出 ClassCastException 异常。正常情形下,getWorker成员会保持一个到activity的GetWorker实现的引用,因此WorkerChoose可以通过调用在GetWorker接口中定义的方法分享事件给activity。这个地方是关键!
最后,在使用Fragment的Activity中实现该接口的相应方法,即可使Fragment中的数据传入Activity中!
相关文章推荐
- Android Api Demos登顶之路(五十七)Service Remote Service Binding options
- Android 实现适配器中的子控件与Activity通信
- Android ListView —— Adapter, BaseAdapter, RecycleBin
- android fragment 详解(二)
- Android应用程序的权限列表
- Android View.OnTouchListener 的子类,AutoScrollHelper,ZoomButtonsController,ListViewAutoScrollHelper
- 关于android studio的代码显示行数的问题
- android ListView 防止图片上拉跳动
- [转]Android Parcelable和Serializable的区别
- Android笔记:Fragment与ViewPager组合时,如何在FragmentActicity获取Fragment对象
- Android Studio error and config collection
- Android -- Contentprovider---listview 实现调用通讯录和短信接收
- android开发中如何获得应用的数字签名
- ANDROID开发之SQLite详解
- Android Studio如何快速生成get,set,tostring,构造函数
- Android基础View 绘制的流程
- Android中activity间数据传递方式
- Android 同一Activity 静态加载fragment 并实现通信
- android菜鸟进阶之路——线程的基本探究
- phonegap android插件,启动activity并返回值