![](/img/trans.png)
[英]How to define broadcast receiver class and phonestatechange class in mainactivity?
[英]Broadcast Receiver - MainActivity is not an enclosing class
我知道这被问了很多次,但我找不到适合我的答案。 我现在才读本科的第三个学期,所以还没有那么多知识。
在我完成了我的初学者 Java 课程(强调初学者)之后,目前正在学习我的第一个 Android 课程。
由于 Corona,几乎没有 Tutor 支持,并且脚本缺乏体面的解释。
我正在努力实现我的第一个广播接收器。 插入电源线时,它应该敬酒。
我尝试了一个动态接收器,所以我在我的 MainActivity 中注册了接收器,如下所示:
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {
[...]
private PowerConnectedReceiver mPowerConnectedReceiver;
public void onResume() {
super.onResume();
IntentFilter powerFilter = new IntentFilter(Intent.ACTION_POWER_CONNECTED );
mPowerConnectedReceiver = new PowerConnectedReceiver();
getApplicationContext().registerReceiver(mPowerConnectedReceiver , powerFilter);
}
@Override
protected void onPause() {
getApplicationContext().unregisterReceiver(mPowerConnectedReceiver);
super.onPause();
}
广播接收器如下所示,这是弹出错误的地方。 对于 Toast 的上下文,它说 MainActivity 不是封闭的 class。
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import static android.widget.Toast.LENGTH_LONG;
public class PowerConnectedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(MainActivity.this, "POWER CONNECTED received", LENGTH_LONG ).show();
}
}
这是脚本中教授的实现方式。
正如我所提到的,我对编程相当陌生,这可能是完全显而易见的,但我没有看到它。
我唯一尝试的是将其更改为 MainAcivity.class,但这没有任何作用。 谢谢你的支持。
您的代码是正确的,但在 toast 消息中您必须使用接收者的上下文,即 onReceive 方法的第一个参数。
从以下位置更新您的 toast 消息:
Toast.makeText(MainActivity.this, "POWER CONNECTED received", LENGTH_LONG ).show();
至
Toast.makeText(context, "POWER CONNECTED received", LENGTH_LONG ).show();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.