如何设置 TextView 在 activity 中可见而不在自定义广播接收器 class 中可见?
How to set a TextView visibile in activity and not in CustomBroadcastReceiver class?
我有以下自定义广播接收器class来检查是否已连接 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);
问题是我不想在这个 class 中对文本视图进行此操作,我想在 MainActivity class 中进行此操作。我该如何解决这个问题?
创建一个包含单个方法的接口,如 setIsConnected(Boolean)
在MainActivity
中实现这个接口。该方法将从您的 BroadcastReceiver
调用,在此方法中,您可以使用 UI.
做任何您想做的事
让 BroadcastReceiver
的构造函数将接口作为参数而不是 TextView
。
在onReceive()
中,根据WIFI的状态在接口上调用setIsConnected()
布尔值
我有以下自定义广播接收器class来检查是否已连接 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);
问题是我不想在这个 class 中对文本视图进行此操作,我想在 MainActivity class 中进行此操作。我该如何解决这个问题?
创建一个包含单个方法的接口,如 setIsConnected(Boolean)
在MainActivity
中实现这个接口。该方法将从您的 BroadcastReceiver
调用,在此方法中,您可以使用 UI.
让 BroadcastReceiver
的构造函数将接口作为参数而不是 TextView
。
在onReceive()
中,根据WIFI的状态在接口上调用setIsConnected()
布尔值