Fragment的通信,图文详解


package com.wust.twofragrement;



import android.app.Fragment;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.TextView;



import androidx.annotation.NonNull;

import androidx.annotation.Nullable;



/**

* ClassName: OneFragrement <br/>

* Description: <br/>

* date: 2021/5/27 16:26<br/>

*

* @author yiqi<br />

* @email:1820762465@qq.com

* @QQ:1820762465

* @since JDK 1.8

*/

public class TwoFragrement extends Fragment {



  private TextView tv_show_text;



  @Nullable

  @Override

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

      View view = inflater.inflate(R.layout.fragrement_two, null);

      tv_show_text = view.findViewById(R.id.tv_show_text);

      return view;

  }



  //第二步:在第二个fragment里公开一个修改自身TextView的方法

  public void setText(String str){

      tv_show_text.setText(str);

  }

} 

MainActivity的java代码


package com.wust.twofragrement;



import androidx.fragment.app.FragmentActivity;

import android.os.Bundle;



public class MainActivity extends FragmentActivity {



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        //第一步,获取 Fragrement

        OneFragrement oneFragrement = new OneFragrement();

        TwoFragrement twoFragrement = new TwoFragrement();



        //第二步,占坑

        getFragmentManager().beginTransaction().replace(R.id.fl_one,oneFragrement,"one").commit();

        getFragmentManager().beginTransaction().replace(R.id.fl_two,twoFragrement,"two").commit();

    }

}

  • 方法二:使用回调

oneFragment的java代码


package com.wust.twofragrement;





import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;



import androidx.annotation.NonNull;

import androidx.annotation.Nullable;

import android.app.Fragment;

import android.widget.Button;

import android.widget.EditText;



/**

 * ClassName: OneFragrement <br/>

 * Description: <br/>

 * date: 2021/5/27 16:26<br/>

 *

 * @author yiqi<br />

 * @email:1820762465@qq.com

 * @QQ:1820762465

 * @since JDK 1.8

 */

public class OneFragrement extends Fragment {



    private Button btn_set_text;

    private EditText et_input_text;

    private onReceiveData mOnReceiveData;



    @Nullable

    @Override

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

        View view = inflater.inflate(R.layout.fragrement_one, null);



        et_input_text = view.findViewById(R.id.et_input_text);

        btn_set_text = view.findViewById(R.id.btn_set_text);



        btn_set_text.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                //第三步:调用

                mOnReceiveData.receiveData(et_input_text.getText().toString());

            }

        });

        return view;

    }



    //第一步:定义接口

    public interface onReceiveData{

        void receiveData(String s);

    }



    //第二步:暴露接口

    public void setOnReceiveDataListener(onReceiveData onReceiveData){

        this.mOnReceiveData = onReceiveData;

    }

} 

twoFragment的java代码


package com.wust.twofragrement;



import android.app.Activity;

import android.app.Fragment;

import android.os.Bundle;

import android.view.LayoutInflater;

import android.view.View;



### 面试复习路线,梳理知识,提升储备

自己的知识准备得怎么样,这直接决定了你能否顺利通过一面和二面,所以在面试前来一个知识梳理,看需不需要提升自己的知识储备是很有必要的。

关于知识梳理,这里再分享一下我面试这段时间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

**[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](

)**

* **架构师筑基必备技能**
* **Android高级UI与FrameWork源码**
* **360°全方面性能调优**
* **解读开源框架设计思想**
* **NDK模块开发**
* **微信小程序**
* **Hybrid 开发与Flutter**

![](https://www.icode9.com/i/ll/?i=img_convert/1379668d6f47b8ccc148f457a7ec2804.png)

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结:

![Android开发七大模块核心知识笔记](https://www.icode9.com/i/ll/?i=img_convert/78c0c9212054e56ecd5ff5d3b1a3ac0a.png)

**《960全网最全Android开发笔记》**

![](https://www.icode9.com/i/ll/?i=img_convert/998108ff340d5d5adf80571e3455d001.png)

**《379页Android开发面试宝典》**

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

![](https://www.icode9.com/i/ll/?i=img_convert/a96339d11bb41086d7b18aec2d68eb21.png)

**《507页Android开发相关源码解析》**

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

> **本文已被[腾讯CODING开源托管项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://ali1024.coding.net/public/P7/Android/git)收录,自学资源及系列文章持续更新中...**
[外链图片转存中...(img-dBbVee9f-1631253479098)]

**《507页Android开发相关源码解析》**

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

> **本文已被[腾讯CODING开源托管项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://ali1024.coding.net/public/P7/Android/git)收录,自学资源及系列文章持续更新中...**
上一篇:Android:Fragment + Activity 二合一


下一篇:4.4activity和fragment之间的通信