Fragment和Activity之间通信

作者: 蒹葭流 | 来源:发表于2016-05-10 21:39 被阅读991次
    • 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();
        }

    相关文章

      网友评论

        本文标题:Fragment和Activity之间通信

        本文链接:https://www.haomeiwen.com/subject/aepyrttx.html