码迷,mamicode.com
首页 > 其他好文 > 详细

两个简单Fragment之间的通信

时间:2016-05-13 04:01:57      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

现在我要做个Fragment与Fragment之间的通信小demo。

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

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

技术分享

技术分享

public class Fragment1 extends Fragment {

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

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

    }
}

运行是这样的:技术分享


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

技术分享

技术分享


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

Fragment1

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);
    }
}

Fragment2

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);
    }

}

来看看模拟器

技术分享

单击 按钮1

技术分享

单击 按钮2

技术分享

这是我在Fragment学习的一个小小的练习。请原谅我的乱码,这个问题我也花了时间去弄,暂时还没有找到问题所在,如果有大神知道可以评论教教我!感谢万分!

两个简单Fragment之间的通信

标签:

原文地址:http://blog.csdn.net/qq_26849491/article/details/51336986

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!