Android fragment 想activity 传送数据
fragment可以通过定义 fragment的接口的方法来 想activity传送数据;
而activity则是通过实现 fragment的接口来接收fragment的送来的数据;
1.在fragment 的subclass 中定义一个接口 如
OnInterfaceOfFragmentone 接口;
在接口中定义一些方法;让activity来调用;
public OnInterfaceOfFragmentone mCallback;
//为Activity 定义一个接口; public interface OnInterfaceOfFragmentone{ public void OnContactEvent(String index); } @Override public void onAttach(Activity activity){ super.onAttach(activity); // 这是为了保证Activity容器实现了用以回调的接口。如果没有,它会抛出一个异常。 try { mCallback=(OnInterfaceOfFragmentone)activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } }
2. 在fragment的subclass fragmentone 中调用接口的方法来向activity传递信息如
/*fragment 可以通过实现 接口 OnInterfaceOfFragmentone 的mCallback 实例 调用接口的方法OnContactEvent (或者接口的其他方法)) * * mCallback.OnContactEvent(_index); * * 用户可以通过getInterfaceEvent() 将信息传递给Activity * */ public void getInterfaceEvent( String _index){ mCallback.OnContactEvent(_index); }
可以通过fragment的某个用户点击事件 来调用该方法;
//例如; getInterfaceEvent("这是我要传给activity的数据 ");
3.在activity中 实现fragmentone.OnInterfaceOfFragmentone 的接口
public class MainActivity extends FragmentActivity implements fragmentone.OnInterfaceOfFragmentone {//实现fragmentone.OnInterfaceOfFragmentone 的接口
3.1 重写 fragmentone.OnInterfaceOfFragmentone 的接口的方法
OnContactEvent(String index);
//实现fragmentone 的接口OnInterfaceOfFragmentone 的方法OnContactEvent() //把fragment 的数据通过index 传进来 // @Override public void OnContactEvent(String index) { // TODO Auto-generated method stub final String sub=index; Log.e("fragment give me data is",sub); }
3.2得到的结果是这样的