Java Android:无法从其他类访问公共静态函数或公共变量

Java Android:无法从其他类访问公共静态函数或公共变量,java,android,broadcastreceiver,Java,Android,Broadcastreceiver,以下是“MainActivity.java”中的声明 private static String competition = null; 我创建了一个setter函数,它为它增加了价值 public static void setCompetition(String competition1) { competition = competition1; } 我创建了一个getter函数,用于从同一个包中获取另一个类中的值: public static String getCompet

以下是“MainActivity.java”中的声明

private static String competition = null;
我创建了一个setter函数,它为它增加了价值

public static void setCompetition(String competition1) {
    competition = competition1;
}
我创建了一个getter函数,用于从同一个包中获取另一个类中的值:

public static String getCompetition() {
    return competition;
}
但是,它返回null

下面是我如何尝试在函数中使用它 公共void onReceive(上下文、意图){

在扩展BroadcastReceiver的AlarmNotify类中:

       final String competition = MainActivity.getCompetition();

我认为您没有在任何地方调用
setCompetition
。要验证这一点,请尝试使用这段代码-

public static void setCompetition(String competition1) {
    System.out.println("Set competition to "+competition1);
    competition = competition1;
}
如果未看到任何打印消息,则不会调用
setCompetition
。请确保正在调用此消息。

以下是我所犯的错误: 我调用了一个基于网络的异步任务,它需要几秒钟来检索数据。它在后台工作

我正在调用另一个函数,该函数试图访问这些值。它被立即激发,甚至在异步任务可以运行之前。这就是它返回null的原因

异步任务未返回这些值

最后,我将对另一个函数的调用放在Async的postExecute方法中


希望这能帮助那些犯了和我一样错误的人。

很可能你没有在任何地方用非空值调用过
setCompetition
b你在调用时检查过活动是否仍在内存中吗?并显示你设置竞争字符串的代码。同样,看到
这一点会更清楚。
b在访问类全局语句之前,您在哪里调用
MainActivity.setCompetition()
?我在一个异步方法中调用setCompetition-MainActivity.setCompetition(json.getString(MainActivity.TAG_COMPETITION));我可以在一个文本视图中看到它的输出我在一个异步方法中调用setCompetition。