繁体   English   中英

广播接收器 - MainActivity 不是封闭的 class

[英]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.

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