java - 无法在 Android 中使用 BroadcastReceiver 上下文初始化接口(interface)

标签 java android interface broadcastreceiver

我有一个广播接收器如下

Test1.java

public class Test1 extends BroadcastReceiver implements Test2.Interfacetest {

    private Test2 test2;

   @Override
   public void onReceive(Context context, Intent intent) {
       test2 = new Test2(context);
   }

   @Override
   public void interfaceTestMethod() {
        //code
   }

    /*
        Remaining code
    */

}

再上一个类

Test2.java

public class Test2 {

    private Interfacetest InterfacetestCommander;

    public interface Interfacetest {
        void interfaceTestMethod();
    }

    public Test2(Context context) {
        InterfacetestCommander = (Interfacetest) context;

        InterfacetestCommander.interfaceTestMethod();
    }

    /*
        Remaining code
    */
}

当我尝试使用广播接收器上下文初始化接口(interface)时,出现以下错误

Process: in.ijasnahamed.interfaceTester, PID: 4452
java.lang.RuntimeException: Unable to start receiver in.ijasnahamed.interfaceTester.Test1: java.lang.ClassCastException: android.app.Application cannot be cast to in.ijasnahamed.interfaceTester.Test2$interfaceTestMethod

我需要知道可以使用广播接收器上下文初始化接口(interface)吗?如果是,请告诉我怎么做?

N.B :我的真实代码有点长。所以我只是在这里展示了一些简单的类和方法名称的相关代码。

最佳答案

你不应该使用

test2 = new Test2(context);

因为context是Context的一个实例,但是Context没有实现你的接口(interface),你的Test1类实现了这个接口(interface),所以你可以为你的Test2添加一个参数像这样上课:

public Test2(Context context, Interfacetest interfacetest) {
    this.mContext =  context;  //if you don't need the context,just ignore it 
    this.InterfacetestCommander = interfacetest
}

和改变

test2 = new Test2(context);

test2 = new Test2(context,this);

关于java - 无法在 Android 中使用 BroadcastReceiver 上下文初始化接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35010341/

相关文章:

android - webview 打开特定域的站点

java - JgraphT 导出到点文件

.net - 为什么 Queue(T) 和 Stack(T) 没有实现 ICollection(T)?

javascript - 如何使用 request.getparameter 在我的 java Controller 中获取 JavaScript 变量?

java - 在 Weblogic 12.1.x 应用程序服务器上为 JPA 2.1 + 'Spring Data JPA' 选择哪个 Maven 依赖项?

java - 从 Tomcat 6 升级到 Tomcat 8 后出现的问题

java - 为什么 `private static` 字段在 Java 8 接口(interface)中是不允许的?

java - 对话 fragment 中未调用 onRequestPermissionsResult

android - 在 Android 中以编程方式实现 splitView

android、andengine、pureMVC框架整合