Java 从BroadcastReceiver调用MainApplication方法

Java 从BroadcastReceiver调用MainApplication方法,java,android,android-intent,android-service,Java,Android,Android Intent,Android Service,我有一个带有活动、服务和广播接收器的Android应用程序。从这个服务中,我称之为广播意图,它是有效的。广播接收器正确地接收到意图 但是如何从我的类MyBroadcastReceiver访问类main应用程序的方法呢 ((MainApplication)getApplication()).myMethod()给出错误消息“无法解析方法” 致以最诚挚的问候动态创建广播接收器: 在BroadcastReceiver类中定义类成员: YourMainActivity yourMain = null;

我有一个带有活动、服务和广播接收器的Android应用程序。从这个服务中,我称之为广播意图,它是有效的。广播接收器正确地接收到意图

但是如何从我的类
MyBroadcastReceiver
访问类
main应用程序的方法呢

((MainApplication)getApplication()).myMethod()给出错误消息“无法解析方法”


致以最诚挚的问候

动态创建广播接收器:

在BroadcastReceiver类中定义类成员:

YourMainActivity yourMain = null;
方法:

setMainActivityHandler(YourMainActivity main){
yourMain = main;
} 
从您的主要活动中:

private YourBroadcastReceiverClassName yourBR = null;
yourBR = new YourBroadcastReceiverClassName();
    yourBR.setMainActivityHandler(this);    
    IntentFilter callInterceptorIntentFilter = new           IntentFilter("android.intent.action.ANY_ACTION");
    registerReceiver(yourBR,  callInterceptorIntentFilter);
当您的br.onReceive被解雇时,您可以拨打:

yourMain.methodOfMainActivity();

动态创建广播接收器:

在BroadcastReceiver类中定义类成员:

YourMainActivity yourMain = null;
方法:

setMainActivityHandler(YourMainActivity main){
yourMain = main;
} 
从您的主要活动中:

private YourBroadcastReceiverClassName yourBR = null;
yourBR = new YourBroadcastReceiverClassName();
    yourBR.setMainActivityHandler(this);    
    IntentFilter callInterceptorIntentFilter = new           IntentFilter("android.intent.action.ANY_ACTION");
    registerReceiver(yourBR,  callInterceptorIntentFilter);
当您的br.onReceive被解雇时,您可以拨打:

yourMain.methodOfMainActivity();

动态创建广播接收器:

在BroadcastReceiver类中定义类成员:

YourMainActivity yourMain = null;
方法:

setMainActivityHandler(YourMainActivity main){
yourMain = main;
} 
从您的主要活动中:

private YourBroadcastReceiverClassName yourBR = null;
yourBR = new YourBroadcastReceiverClassName();
    yourBR.setMainActivityHandler(this);    
    IntentFilter callInterceptorIntentFilter = new           IntentFilter("android.intent.action.ANY_ACTION");
    registerReceiver(yourBR,  callInterceptorIntentFilter);
当您的br.onReceive被解雇时,您可以拨打:

yourMain.methodOfMainActivity();

动态创建广播接收器:

在BroadcastReceiver类中定义类成员:

YourMainActivity yourMain = null;
方法:

setMainActivityHandler(YourMainActivity main){
yourMain = main;
} 
从您的主要活动中:

private YourBroadcastReceiverClassName yourBR = null;
yourBR = new YourBroadcastReceiverClassName();
    yourBR.setMainActivityHandler(this);    
    IntentFilter callInterceptorIntentFilter = new           IntentFilter("android.intent.action.ANY_ACTION");
    registerReceiver(yourBR,  callInterceptorIntentFilter);
当您的br.onReceive被解雇时,您可以拨打:

yourMain.methodOfMainActivity();

如果您没有在
AndroidManifest.xml
中声明您的
MainApplication
类,则通常会发生上述情况

在AndroidManifest.xml文件中找到
应用程序
标记,并确保其名称属性指向
主应用程序
——如下所示

<application
        android:name="com.you.package.MainApplication"

如果您没有在
AndroidManifest.xml
中声明您的
main应用程序
类,则通常会发生上述情况

在AndroidManifest.xml文件中找到
应用程序
标记,并确保其名称属性指向
主应用程序
——如下所示

<application
        android:name="com.you.package.MainApplication"

如果您没有在
AndroidManifest.xml
中声明您的
main应用程序
类,则通常会发生上述情况

在AndroidManifest.xml文件中找到
应用程序
标记,并确保其名称属性指向
主应用程序
——如下所示

<application
        android:name="com.you.package.MainApplication"

如果您没有在
AndroidManifest.xml
中声明您的
main应用程序
类,则通常会发生上述情况

在AndroidManifest.xml文件中找到
应用程序
标记,并确保其名称属性指向
主应用程序
——如下所示

<application
        android:name="com.you.package.MainApplication"

将上下文强制转换为活动:

//receiver class
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Activity activity = (Activity) context;
        ((MainApplication)activity.getApplication()).myMethod();
        Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
    }
}

将上下文强制转换为活动:

//receiver class
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Activity activity = (Activity) context;
        ((MainApplication)activity.getApplication()).myMethod();
        Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
    }
}

将上下文强制转换为活动:

//receiver class
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Activity activity = (Activity) context;
        ((MainApplication)activity.getApplication()).myMethod();
        Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
    }
}

将上下文强制转换为活动:

//receiver class
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Activity activity = (Activity) context;
        ((MainApplication)activity.getApplication()).myMethod();
        Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show();
    }
}

请参见代码中的注释。。“无法解析方法”请参见代码中的注释。。“无法解析方法”请参见代码中的注释。。“无法解析方法”请参见代码中的注释。。“无法解决方法”谢谢。在另一个场合,这是正确的答案。但这一次我将main应用程序放在了AndroidManifest.xml文件中。相同的调用
((MainApplication)getApplication()).myMethod()会起作用,但不幸的是,当我尝试从
MyBroadcastReceiver
-class调用它时,code>不会起作用。谢谢。在另一个场合,这是正确的答案。但这一次我将main应用程序放在了AndroidManifest.xml文件中。相同的调用
((MainApplication)getApplication()).myMethod()会起作用,但不幸的是,当我尝试从
MyBroadcastReceiver
-class调用它时,code>不会起作用。谢谢。在另一个场合,这是正确的答案。但这一次我将main应用程序放在了AndroidManifest.xml文件中。相同的调用
((MainApplication)getApplication()).myMethod()会起作用,但不幸的是,当我尝试从
MyBroadcastReceiver
-class调用它时,code>不会起作用。谢谢。在另一个场合,这是正确的答案。但这一次我将main应用程序放在了AndroidManifest.xml文件中。相同的调用
((MainApplication)getApplication()).myMethod()会起作用,但不幸的是,当我试图从
MyBroadcastReceiver
-class调用它时,code>不会起作用。谢谢!非常简单快捷的解决方案。谢谢!非常简单快捷的解决方案。谢谢!非常简单快捷的解决方案。谢谢!非常快速和简单的解决方案。