广播数据写入界面

  1. **

广播数据写入界面

**

第一步,我们先在activity_main.xml中添加一个TextView布局,用于显示数据。

代码如下
添加一个简单的TextView布局即可。


第二步,在自己的广播类中,定义一个内部接口

代码如下,接口名可以自己定义

interface DaiLi{
    
} 

在这里插入图片描述

第三步,在主程序MainActivity.java中,实现这个接口

在这里插入图片描述

第四步,在自己定义的广播类Myguanbo中,创建一个类,用于传送自己的数据

类名可以自己定义,这里要注意使用权限,因为MainActivity中要用到这个类

第五步,在MainActivity.java中将this传入到广播类中定义的成员数据中

代码如下:
在这里插入图片描述

第六步,在主程序,MainActivity.java中,得到TextView的控件

代码如下:

tv1 = findViewById(R.id.textView);

第七步,在广播类,内部接口中,写一个写入数据的方法

代码如下:

interface DaiLi{
void xieru(String s);
}
在这里插入图片描述

第八步,在主程序,MainActivity.java中,重写接口的写入数据方法

代码如下:

@Override
public void xieru(String s) {

}

在这里插入图片描述

第九步,在主程序,MainActivity.java中,在重写xieru方法中,把数据给TextView控件显示

因为,一开始,我们得到TextView控件的时候,是定义的局部的,这里直接调用,是会报错的,所以我们要先把TextView控件定义成全局的
在这里插入图片描述
这个时候,我们再去xieru方法里面,把数据传进去。

@Override
public void xieru(String s) {
    tv1.setText(s);
}

效果如下:
在这里插入图片描述

第十步,在自己的广播类中,调用,xieru这个方法

这里,我们要调用接口里面的方法,先要创建一个接口实例,并且需要把这个实例,定义成全局的,因为,下面的步骤,我们需要用到它。

首先,我们创建一个全局的接口实例,

	private DaiLi daiLi;

效果如下:
在这里插入图片描述

然后,在调用xieru方法,

daiLi.xieru();

第十一步,修改chuangShongZiJi()的方法

这时候,chuangShongZiJi( )方法中的参数d就等于daiLi,把主程序中的值,给接口。
代码如下:

public void chuangShongZiJi(DaiLi d){
    daiLi=d;
}

效果如下:

在这里插入图片描述

第十二步,得到主程序传的字符串

你要自己定义一个字符串,用于得到,主程序的"xigua"字符串里的值,
代码如下:

String str = intent.getStringExtra("xigua");

最后在把这个字符串写入到界面tv1中,把字符串“str”给刚刚调用的写入方法。
代码如下:

daiLi.xieru(str);

现在代码就写完啦!我们来看一下效果

在这里插入图片描述

完整代码

Myguanbo.java代码

package com.example.myapplication_10;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.TextView;
import android.widget.Toast;

/**
 * @author QiuSiQi
 * @package com.example.myapplication_200402
 * @fileName Myguanbo
 * @date on 2020/4/2  9:24
* @describe TODO
 */
public class Myguanbo extends BroadcastReceiver {
 private DaiLi daiLi;

@Override
public void onReceive(Context context, Intent intent) {
    String str = intent.getStringExtra("xigua");
    //Toast.makeText(context,str,Toast.LENGTH_SHORT).show();
   //写入界面TV中
    daiLi.xieru(str);

}

//定义一个内部接口
interface DaiLi{
    void xieru(String s);
}
public void chuangShongZiJi(DaiLi d){
    daiLi=d;
}

}

MainActivity.java代码

package com.example.myapplication_10;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements Myguanbo.DaiLi{
 private Myguanbo gb;
 private TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //选台,注册广播
    gb = new Myguanbo();
    IntentFilter intentFilter = new IntentFilter("nanChang");
    registerReceiver(gb,intentFilter);

    gb.chuangShongZiJi(this);

    tv1 = findViewById(R.id.textView);
    Button btn1= findViewById(R.id.button);
    btn1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //发送广播
            Intent intent = new Intent("nanChang");
            intent.putExtra("xigua","6.5");
            intent.setPackage("com.example.myapplication_10");
            sendBroadcast(intent);
        }
    });

}

@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(gb);
}


@Override
public void xieru(String s) {
    tv1.setText(s);
}

}

布局代码,activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">


<Button
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:text="发送广播"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="297dp"
    android:text="TextView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
发布了2 篇原创文章 · 获赞 0 · 访问量 101

猜你喜欢

转载自blog.csdn.net/weixin_46748537/article/details/105267235