gpt4 book ai didi

java - 如何设置 TextView 在 Activity 中可见而不是在自定义广播接收器类中?

转载 作者:行者123 更新时间:2023-11-29 22:52:40 24 4
gpt4 key购买 nike

我有以下自定义广播接收器类来检查 wi-fi 是否已连接:

public class CustomBroadcastReceiver extends BroadcastReceiver {
private TextView textView;

public NetworkStateReceiver(TextView textView) {
this.textView = textView;
}

@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
for (Network network : connectivityManager.getAllNetworks()) {
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
if (networkInfo != null) {
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
boolean isWifiConnected = networkInfo.isConnected();
if (isWifiConnected) {
textView.setVisibility(View.VISIBLE);
}
}
}
}
}
}

如您所见,我向构造函数传递了一个 TextView 对象,以便在设备连接到 wi-fi 时将其设置为可见。在我的 MainActivity 中,我正在创建一个这样的对象:

CustomBroadcastReceiver receiver = new CustomBroadcastReceiver(textView);

问题是我不想在这个类的 TextView 上进行这个操作,我想在 MainActivity 类中进行。我该如何解决这个问题?

最佳答案

创建一个包含单个方法的接口(interface),如 setIsConnected(Boolean)

MainActivity中,实现这个接口(interface)。该方法将从您的 BroadcastReceiver 调用,在此方法中您可以使用 UI 做任何您想做的事情。

BroadcastReceiver 的构造函数将接口(interface)作为参数而不是 TextView

onReceive() 中,根据 WIFI 的状态调用接口(interface)上的 setIsConnected() 和 boolean 值。

关于java - 如何设置 TextView 在 Activity 中可见而不是在自定义广播接收器类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57728525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com