【问题标题】:Variable not updating value变量不更新值
【发布时间】:2012-11-14 17:17:25
【问题描述】:
这很奇怪,也许有人可以帮忙。我有两个类,当我尝试从主类访问变量时,值始终为 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
}
代码只是说明。
【问题讨论】:
标签:
android
class
variables
【解决方案1】:
这里有几个大问题。首先,为什么会发生这种行为:
您没有从SecondClass 内部的第一个MainActivity 实例访问变量,而是创建了MainActivity 的第二个新实例,因此您可以访问与原始变量不同的变量。
现在,第二个问题围绕着在 Android 中执行此操作的正确方法。您应该绝不直接实例化 Activity 实例。传递对 Activity 的引用比框架已经做的更多也不是好的做法。如果您的 Activity 需要将一些信息传递给您的自定义 ImageView,您应该在您的 ImageView 上创建一个方法,您可以使用该方法为 Activity 传递值(即SecondClass.setCurrentAngle(angleCurrent))
【解决方案2】:
如果您正在寻找一个视图来访问活动中的变量,它是行不通的。您需要将 setMethod 添加到自定义视图并设置活动的值。 Chthlu 关于您没有获得价值的原因是正确的:new 创建的实例与您在屏幕上的实例不同。你永远不应该在 Activity 类上调用new。你甚至不应该有一个 Activity 的构造函数,你应该在 onCreate 方法中设置所有内容。