Fragment和Activity之间通信

  • 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();
      }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容