您的位置:首页 > 其它

Fragment与Activity之间数据传递

2015-10-04 14:36 363 查看
我们经常遇到fragment与activity之间通信的问题,一般也就那么几种方式,

1.fragment中使用getActivity()调用Activity中的public方法

2.activity使用getSupportFragmentManager()来管理fragment

3.activity使用bundle向fragment传递数据

3.activity实现fragment中定义接口接收数据(回调机制)

下面就来介绍一下bundle和接口的实现方式:

bundle方式传递数据

首先,在activity中往bundle里加数据

然后调用setArguments(bundle);

Bundle bundle = new Bundle();
bundle.putString("data", "数据来自mainActivity");
fragmentA.setArguments(bundle);
fragmentManager.beginTransaction().replace(R.id.layout_root, fragmentA, null).commit();


在fragment中接收数据

/**接收来自Activity的数据**/
Bundle bundle = getArguments();
textView.setText(bundle.getString("data"));


接口方式传递数据

在fragment中定义接口

public interface OnReceiverDataListener {
void loadData(String str);
}


因为接口要由activity来实现,所以要把activity传递给这个接口引用,这样,就可以和Activity进行交互了

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
onReceiverDataListener = (OnReceiverDataListener) activity;
}


activity实现接口便完成了数据的传递

@Override
public void loadData(String str) {
Toast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();
}


源码下载

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息