2016-02-19 102 views
1

我想每次單擊一個按鈕時都會將得分變量加1。問題是我必須在onClick之外聲明分數變量,否則它將始終設置爲0.另外,我無法聲明變量final,因爲我正在修改該變量。這是代碼。變量需要聲明爲最後

int score = 0; 

    View.OnClickListener listener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      score++; 

      scoreLabel.setText(String.valueOf(score)); 
+0

讓它類成員變量 – Inducesmile

回答

0

的問題是,在VAR分數是在方法作用域,動議和聲明得分爲類變量。

+0

將比分變量作爲「全局」變量或類變量.... –

+0

是的,我知道,但我不能這樣做,除非我等10分鐘。 –

+0

我剛更改了分數變量以公開。 –

2

理想的解決方案是製作變量static並使其成爲外部類的成員。使其成爲static意味着,該類的所有對象將共享該變量的單個副本,並且該值在任何地方都保持相同。在外部類中聲明static int score;

1

如果你不想使用靜態變量,你可以在外部類中聲明分數(private int score;),然後在構造函數中初始化它。這將給它正確的範圍被訪問!

0

您可以使用MutableInt,它的名稱表示它是一個可變整數。這個類在apache的commons中提供。 這樣你可以保持變量本地和最終。

希望這有助於