Java 如何从另一个文件调用变量?

Java 如何从另一个文件调用变量?,java,android,Java,Android,我想将一个变量从一个类调用到另一个类(在我的示例中,从WifiActivity到WifiBroadcastReceiver)。我使用一种方法来解决这个问题,这是我的代码: WifiActivity.java: public class WifiActivity extends Activity implements OnClickListener { [...] public boolean getLocalizationState() { return lo

我想将一个变量从一个类调用到另一个类(在我的示例中,从WifiActivity到WifiBroadcastReceiver)。我使用一种方法来解决这个问题,这是我的代码:

WifiActivity.java:

public class WifiActivity extends Activity implements OnClickListener {

    [...]

    public boolean getLocalizationState() {
        return localizationPhase; //localizationPhase is defined as boolean
    }

    [...]
}
WifiBroadcastReceiver.java:

public class WifiBroadcastReceiver extends BroadcastReceiver {

    private WifiActivity wifiActivity;  //
    [...]
    private boolean localizationState;

    @Override
    public void onReceive(Context context, Intent intent) {

        [...]

        while(position<=numberdisplay-1){ // While we have not read all the AP RSSI average
            localizationState=wifiActivity.getLocalizationState(); //The problem is here!!!
            if(sampleposition[position]!=0  && localizationState==true){ 
                [...]
            }
            [...]
        }
        [...]
    }
}

@杰森C:当你谈到初始化时,你会考虑这个问题吗?很抱歉我缺乏知识…

在使用Android时,你真的不需要做这样的事情:

private WifiActivity wifiActivity; 

尝试使用额外功能来在组件之间传递信息。

是否将本地化阶段设置为静态?如何初始化
wifiActivity
?在哪里设置
本地化阶段
?问题是这个变量被定义为
boolean
而不是
boolean
,它将被设置为默认的
false
,这与
boolean
对象不同,后者默认为
null
。我不知道您在什么时候设置
本地化阶段
,但您可能在设置之前查找该值。@lukronos不,不要将其设置为静态。它可能“起作用”,但原因是错误的。您需要向我们展示如何初始化
wifiActivity
。如果您可以编写一个完全独立的小型测试程序来显示这种行为,这也会很有帮助。还要验证您是否确实在调试器中观察到了正确的位置。@lukronos首先,您应该在问题的注释部分添加注释,以便其他人注意到。我只是碰巧注意到你在帖子中的评论。第二,回答您:不,您在哪里设置
wifiActivity
的值?
wifiActivity=…
在哪里?你说额外的是什么意思?如果可能的话,你能给我举个例子吗?对不起,我是一个初学者在编码:s。您可能应该查看android开发者页面上的intent文档,并学习一些教程。这是一个很好的观点,但它也没有解决有关
getLocalizationState()的返回值的OPs问题,更适合作为对问题的评论。@elevine对手头的问题进行分析,并结合您对更好设计的建议,将是一个建设性的回应。目前,它是“根”的任意定义的“根”-“根”的原因是OP试图首先编写应用程序(如果他不这样做,问题就会解决。):)@JasonC同意组合是最好的答案。我今天觉得有点懒,没有尽可能彻底地努力:)
private WifiActivity wifiActivity;