Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 变量不更新值_Android_Class_Variables - Fatal编程技术网

Android 变量不更新值

Android 变量不更新值,android,class,variables,Android,Class,Variables,这很奇怪,也许有人能帮上忙。我有两个类,当我尝试从主类访问变量时,值总是0.0 MAIN CLASS public class MainActivity extends Activity { public float angleCurrent; - do something whith angleCurrent //System.out.println(angleCurrent); - I get right values } SECOND CLASS public cl

这很奇怪,也许有人能帮上忙。我有两个类,当我尝试从主类访问变量时,值总是0.0

MAIN CLASS

public class MainActivity extends Activity {
  public float angleCurrent;
  - do something whith angleCurrent
  //System.out.println(angleCurrent);    - I get right values
}

SECOND CLASS

public class SecondClass extends ImageView {
  public float curAngle = new MainActivity().angleCurrent;
  //System.out.println(curAngle);   - I get 0.0 all the time
}

代码只是一个例子

如果您正在寻找一个视图来访问活动中的变量,它将不起作用。您需要向自定义视图中添加一个setMethod,并从活动中设置值。Chthlu正确地解释了为什么您没有得到一个值:
new
创建了一个不同于屏幕上的实例。您不应该在活动类上调用
new
。您甚至不应该为活动设置构造函数,您应该在
onCreate
方法中设置所有内容。

这里有几个大问题。首先,行为发生的原因:

您不是从
SecondClass
中的第一个
MainActivity
实例访问变量,而是创建了一个新的
MainActivity
的第二个实例,因此您可以访问与原始变量不同的变量

现在,第二个问题围绕着在Android中实现这一点的正确方法。您不应该直接实例化活动实例。与框架本身相比,传递对活动的引用也是不好的做法。如果您的活动需要将一些信息传递给自定义的
ImageView
,您应该在
ImageView
上创建一个方法,以便活动可以使用该方法向前传递值(即
SecondClass.setCurrentAngle(angleCurrent)