- Fragment中可以调用getActivity()来获取它所在的Activity。
- Activity可以调用 FragmentManager的FindFragmentByid()或者FindFragmentByTag()来获取Fragment。
Activity向Fragment发送数据
-
通过Bundle包装数据,在调用Fragment的setArguments方法发送数据给Fragment。
String str=text.getText().toString(); MyFragment5 fragment5=new MyFragment5(); Bundle bundle=new Bundle();bundle.putString("name",str); fragment5.setArguments(bundle); FragmentManager fragmentManager=getFragmentManager(); FragmentTransaction transaction=fragmentManager.beginTransaction(); transaction.add(R.id.ll_layout,fragment5,"Fragment5"); transaction.commit(); Toast.makeText(Main5.this,"向fragment发送数据:"+str,Toast.LENGTH_LONG).
-
在Fragment里通过调用getArguments().get()来获取数据。
String str=getArguments().get("name").toString(); text.setText(str); Toast.makeText(getActivity(),"已接收到:"+str,Toast.LENGTH_LONG).show();
Fragment向Activity发送数据
-
在Fragment中定义一个接口,用于被Activity实现
public interface MyListener{ public void thank(String code); }
-
Fragment中覆写onAttach方法
@Override public void onAttach(Activity activity) { myListener= (MyListener) activity; super.onAttach(activity); }
-
Fragment中中调用thank方法
private MyListener myListener; *********** myListener.thank(code);
-
在Activity中接口实现方法返回的参数就是接收到的数据
@Override public void thank(String code) { Toast.makeText(Main5.this,"已成功接收到"+code+",客气了",Toast.LENGTH_LONG).show(); }
网友评论