【问题标题】:How do i change a variable of another class?如何更改另一个类的变量?
【发布时间】:2015-07-11 09:44:45
【问题描述】:

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

MainActivity.modeNr = 1;

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

【问题讨论】:

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

标签: java android static protected non-static


【解决方案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 

}
}

【讨论】:

    【解决方案2】:

    抱歉,我无法发表评论。

    您的 modeNr 不是静态变量。你需要像这样定义它:

    protected static String modeNr="ddddd"
    

    由于你是通过MainActivity.modeNr修改的,所以这个变量必须是静态变量。

    【讨论】:

      【解决方案3】:

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

      static String modeNr="soemthing"
      

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

      【讨论】:

        【解决方案4】:

        只需将modeNr 设为变量static

        我认为日志Non-static field 'modeNr' cannot be referenced from a static context 正在解释一切。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-25
          • 2021-05-30
          • 1970-01-01
          • 1970-01-01
          • 2015-01-01
          • 1970-01-01
          • 2020-07-30
          • 1970-01-01
          相关资源
          最近更新 更多