两个简单Fragment之间的通讯

如今我要作个Fragment与Fragment之间的通讯小demo。java

  • 创建两个Fragment,而后各添加1个按钮和1个TextView。
  • 单击Fragment1的按钮修改Fragment2里的TextView文本。
  • 相同的,单击Fragment2里面的按钮修改Fragment1的TextView文本。

前期准备:在Activity里面放进两个fragment: 1和2,再为其各绑定View。web

这里写图片描述

这里写图片描述

public class Fragment1 extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment1, null);
        return rootView;

    }
}

运行是这样的:这里写图片描述ide


为两个xml文件都添加TextView和Buttonsvg

这里写图片描述

这里写图片描述


接下来就要去找到按钮响应事件,在Fragment1和Fragment2的java文件中写:学习

Fragment1spa

public class Fragment1 extends Fragment {

    private TextView tv1;
    private Button button1;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment1, null);

        button1 = (Button) rootView.findViewById(R.id.button1);//按钮
        tv1 = (TextView) rootView.findViewById(R.id.textView1);//文本

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("在Fragment1响应点击按钮事件");

                //获得当前Fragment所挂载的Activity,而后获得fragment2.
                Fragment2 fragment2 = (Fragment2) getActivity().getFragmentManager().findFragmentById(R.id.fragment2);
                fragment2.setText("内容变化了.....");
            }
        });
        return rootView;

    }
     public void setText(String text) {//定义个修改文本内容的方法
        tv1.setText(text);
    }
}

Fragment23d

public class Fragment2 extends Fragment {

    private TextView tv2;
    private Button button2;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment2, null);

        button2 = (Button) rootView.findViewById(R.id.button2);//按钮

        tv2 = (TextView) rootView.findViewById(R.id.textView2);//文本

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("在Fragment2响应点击按钮事件");
                Fragment1 fragment1 = (Fragment1) getActivity().getFragmentManager().findFragmentById(R.id.fragment1);
                //获得当前Fragment所挂载的Activity,而后获得fragment1.
                fragment1.setText("内容变化了.....");
            }
        });
        return rootView;
    }

    public void setText(String text) {
        tv2.setText(text);
    }

}

来看看模拟器code

这里写图片描述

单击 按钮1xml

这里写图片描述

单击 按钮2blog

这里写图片描述

这是我在Fragment学习的一个小小的练习。请原谅个人乱码,这个问题我也花了时间去弄,暂时尚未找到问题所在,若是有大神知道能够评论教教我!感谢万分!