两个简单Fragment之间的通信

现在我要做个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学习的一个小小的练习。请原谅我的乱码,这个问题我也花了时间去弄,暂时还没有找到问题所在,如果有大神知道可以评论教教我!感谢万分!

时间: 2024-10-14 00:55:56

两个简单Fragment之间的通信的相关文章

搭建Activity与Fragment,Fragment与Fragment之间的通信架构

内心独白:  曾几何时但凡听到架构之两个字,总能联想到老子说的一句话:"玄之又玄,众妙之门".说不清,道不明.就像是看不见,摸不着,但又真实存在的东西给我们的那种感觉. 回顾人类的历史,繁重的劳动让我们意识到工具的必要性和重要性,并学会了去发明和使用工具.当我进行了大量的,甚至是繁重的编程之后,也开始重新意识到架构的必要性和重要性.当然软件工程发展了这么多年,构架与模式之类的东西前辈们早就说过并且践行与呼吁过,并且也留下了很多值得我们学习和研究的构架模式.但于我个人而言,在没有经历过痛

[转][译][Android基础]Android Fragment之间的通信

2014-2-14 本篇文章翻译自Android官方的培训教程,我也是初学者,觉得官方的Training才是最好的学习材料,所以边学边翻译,有翻译不好的地方,请大家指正. 如果我们在开发过程中为了重用Fragment这个UI组件,那么我们应该把Fragment设计成是“自包含”.“模块化”组件,这种组件定义自己的布局和行为.一旦我们成功定义了这样的可重用的Fragment,我们就可以将他们与Activity进行关联,然后与整个Application进行整体的UI组装. 我们经常需要一个Fragm

Fragment的生命周期&同一Activity下不同Fragment之间的通信

Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方式来瞧一瞧Fragment的生命周期是什么样的: 1 publicclass Fragment1 extends Fragment { 2 publicstaticfinal String TAG = "Fragment1"; 3 @Override 4 public View onCre

Android - Fragment (三)不同Fragment之间的通信

在Fragment的java文件中,可以使用getActivity()来获得调用它的activity, 然后再找到另一个Fragment,进行通信 getActivity().getFragmentManager().findFragmentById(R.id.fragment_list); 但这样做耦合度太高,不方便后续的修改操作 Fragment与其附着的Activity之间的通信,都应该由Activity来完成 不能是多个Fragment之间直接通信 Fragment与其附着的Activi

Activity与Fragment之间的通信

有时候我们需要在fragment与Activity之间通信,下面简单的总结下. 首先贴一个结果吧.在输入框中输入信息-->按钮-->弹出消息toast 分两部分: Activity——>Fragment 在Activity中创建Bundle数据包,并且调用Fragment的setArguments(Bundle bundle). FragmentActivity.java fragment.java  Fragment——>Activity 需要在Fragment中定义一个内部回调

11Communicating with Other Fragments(Fragment之间的通信)

In order to reuse the Fragment UI components, you should build each as a completely self-contained, modular component that defines its own layout and behavior. Once you have defined these reusable Fragments, you can associate them with an Activity an

fragment之间的通信

Fragment有一个公共的桥梁 Activity public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //[1]获取Fragment的管理者 FragmentManager frag

两个页面之间的通信

今天要给大家说的是两个不同页面之间的通信,通过一个拖拽demo来模拟: 首先,写好基础的拖拽代码: <script> window.onload = function() { var oDiv = document.getElementById('div'); oDiv.onmousedown = function(ev) { var ev = window.event || ev; var disX = ev.clientX - oDiv.offsetLeft; var disY = ev.

android-----Fragment之间的通信

上一篇介绍了Fragment的生命周期,大致了解了Fragment的生命周期与其所绑定的Activity有密切的关系,这一篇我们学习下Fragment之间的通信: 话不多说,通过实例来学习: 定义两个Fragment,让他们显示在同一Activity中,注意只有两个Fragment处于同一个Activity中的时候才会涉及到他们之间的通信 fragment1.xml <?xml version="1.0" encoding="utf-8"?> <L