2011-06-12 58 views
0

這有點令人沮喪,因爲我不知道爲什麼它沒有添加。我有一個公共整數(公衆詮釋intVar;),我想增加1的方法。我試過intVar ++,intVar + = 1和intVar = intVar + 1; ...爲什麼我不能通過1添加這個int?

那麼爲什麼可以'我把這個整數增加1?

public class activityMain extends Activity { 
    public int intVar; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.cdtracks); 
     intVar = 1; 
    } 

    public void myMethod() { 
     intVar = intVar+1; 
     Log.d("MYTAG", "intVar="+intVar) 
     //everytime I call the method, it will always say 1. 
    } 
} 
+1

intVar是否受其他代碼影響?你可以顯示一個myMethod()被實際調用的實例嗎? – Maximus 2011-06-12 06:17:23

+1

這似乎沒問題(除了最後一行缺少';'外),所以我會去「你確定這是實際的代碼嗎?也許有些東西你沒有告訴我們,因爲你不認爲這很重要?」 – MByD 2011-06-12 06:18:39

+0

@Maximus以及我的活動很長......但按下按鈕時會調用myMethod()。我在任何地方都有logcats,所以我知道它調用方法就好,應用程序工作正常,只是它不會添加該整數。 @MByD這不是實際的代碼,因爲我回復給Maximus,它超長。我有一個Logcat向我報告intVar,它總是說1,從不2,3,4 ... – 2011-06-12 06:25:47

回答

2

您是否確定您顯示的onCreate實際執行?如果你兩次調用你的方法會發生什麼?

+0

執行onCreate。我甚至在方法中初始化整數。 HOwever我會嘗試運行該方法兩次,這是一個好主意...... – 2011-06-12 06:26:45

+0

這工作......我把數學方法扔到自己的方法中,只是在方法中運行了兩次公式......它工作。運行兩次後爲什麼會起作用? – 2011-06-12 06:35:16

+2

@Anony Honciano:你在哪裏打電話給MyMethod()。如果它在構造函數中,那麼它將在onCreate()之前被調用,因此intVar將在第一次增加之前爲零,這意味着第一次MyMethod調用的結果將爲'1',因此您看到的結果。嘗試說「public int intVar = 1;」我敢打賭你會得到正確的結果。 – 2011-06-12 06:52:26

0

如果您尚未這樣做,請將日誌語句添加到OnCreate方法。這可能會告訴你一些事情。您可能會發現intVar變量應存儲在savedInstanceState包中,以使其持久。這是在活動的onSaveInstanceState方法中完成的。

相關問題