Java 如何更改另一个类的变量?

Java 如何更改另一个类的变量?,java,android,static,protected,non-static,Java,Android,Static,Protected,Non Static,我在类“MainActivity”中有一个名为modeNr的变量,它受到保护,因此应该可以从包中访问它,但是每当我试图从同一个包中的类中修改它时,它就会给出错误:“非静态字段‘modeNr’不能从静态上下文引用”。我使用以下行更改变量: MainActivity.modeNr=1 有没有关于问题是什么以及如何纠正的想法?您正在尝试将非静态成员从静态函数更改为静态成员。您还需要使该变量成为静态的,或者需要创建该类的对象。 让我们假设 class Test { int node = 0; sta

我在类“MainActivity”中有一个名为modeNr的变量,它受到保护,因此应该可以从包中访问它,但是每当我试图从同一个包中的类中修改它时,它就会给出错误:“非静态字段‘modeNr’不能从静态上下文引用”。我使用以下行更改变量:

MainActivity.modeNr=1


有没有关于问题是什么以及如何纠正的想法?

您正在尝试将非静态成员从静态函数更改为静态成员。您还需要使该变量成为静态的,或者需要创建该类的对象。 让我们假设

class Test {
 int node = 0;
 static int node1 =10; 

}

class changeNode {

public static void changeNode(){
 new Test().node = somevalue;
//or you need to make node static and change like this
Test.node1 = some value 

}
}
对不起,我不能评论

您的modeNr不是静态变量。您需要将其定义为:

protected static String modeNr="ddddd"

由于您是通过MainActivity.modeNr对其进行修改的,因此该变量必须是静态变量。

要消除该错误,您需要将变量定义为静态变量

static String modeNr="soemthing"

要访问静态变量,可以通过静态成员或对象访问它。

只需创建
modeNr
variable
static


我认为log
非静态字段“modeNr”不能从静态上下文中引用
正在解释一切。

是的,实例化MainActivity。注释中的答案和下面的答案将有助于实现您的目标。但这种方法是完全不切实际的。你想达到什么目标?我相信有更好的方法做任何事情。