2012-11-14 78 views
2

这很奇怪,也许有人可以帮助解决这个问题。我有两类,当我尝试从主类访问变量时,值总是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 
} 

代码就是例证。

回答

1

这里有几个大问题。首先,为什么行为正在发生:

你是不是从第一MainActivity实例访问的SecondClass里面的变量,你已经创造了MainActivity一个新的第二个实例,所以你得到访问比原来不同的变量。

现在,第二个问题包含了在Android中执行此操作的正确方法。你应该绝不会直接实例化活动实例。将框架引用传递给Activity并不是一个好习惯。如果您的活动需要将某些信息传递给您的自定义ImageView,则应在您的ImageView上创建一个方法,您可以使用该方法向Activity传递值(即SecondClass.setCurrentAngle(angleCurrent)

0

如果您正在查看某个视图以访问活动中的变量,则该视图不起作用。您需要将setMethod添加到自定义视图并设置活动的值。 Chthlu是正确的,你为什么没有得到一个价值:new创建一个不同于你在屏幕上的实例。你不应该在Activity类上调用new。你甚至不应该有一个Activity的构造函数,你应该设置onCreate方法中的所有内容。