如何设置 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()布尔值