无法使用 Android 中的 BroadcastReceiver 上下文初始化接口

Unable to initialise interface using BroadcastReceiver context in Android

我有一个广播接收器如下

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
    */

}

还有一个class

Test2.java

public class Test2 {

    private Interfacetest InterfacetestCommander;

    public interface Interfacetest {
        void interfaceTestMethod();
    }

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

        InterfacetestCommander.interfaceTestMethod();
    }

    /*
        Remaining code
    */
}

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

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

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

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

你不应该使用

test2 = new Test2(context);

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

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);