2012-11-14 77 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方法中的所有內容。