Java Android:无法从其他类访问公共静态函数或公共变量
以下是“MainActivity.java”中的声明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
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。