繁体   English   中英

将数据从广播接收器发送到MainActivity

[英]Send data from Broadcast receiver to MainActivity

我需要在屏幕上显示连接状态。 看起来很简单...

这是我下面的接收器代码:

public class PowerConnectionReceiver extends BroadcastReceiver {

public PowerConnectionReceiver() {
}

@Override
public void onReceive(Context context, Intent intent) {
    String state;
    if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {
        state = "Charging";
        Toast.makeText(context, state, Toast.LENGTH_SHORT).show();

    } else {
        intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED);
        state = "Not charging";
        Toast.makeText(context, state, Toast.LENGTH_SHORT).show();
    }
}
}

我如何在屏幕textView上显示我的状态变量。 有人可以帮忙吗? 谢谢!

您需要注册一个Callback PowerConnectionReceiver创建一个Interface ,如下所示:

public Interface NetworkStatusCallback {
    public void onStateChange(String state);
}

现在在您的MainActivity实现此Callback ,如下所示:

public class MainActivity extends AppCompatActivity implements PowerConnectionReceiver.NetworkStatusCallback  {...}

PowerConnectionReceiver创建此Callbackreference ,并进行如下声明:

private NetworkStatusCallback mCallback;
mCallBack = (NetworkStatusCallback)context;

现在在onReceive(Context context, Intent intent)执行以下操作:

@Override
public void onReceive(Context context, Intent intent) {
    String state;
    if (intent.getAction().equals(Intent.ACTION_POWER_CONNECTED)) {
        state = "Charging";
        mCallback.onStateChange(state);
        Toast.makeText(context, state, Toast.LENGTH_SHORT).show();

    } else {
        intent.getAction().equals(Intent.ACTION_POWER_DISCONNECTED);
        state = "Not charging";
        mCallback.onStateChange(state);
        Toast.makeText(context, state, Toast.LENGTH_SHORT).show();
    }
}

您将在MainActivity收到状态

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM