2012-01-22 42 views
0

所以我得到了這個onClickListener,並在裏面我聲明瞭一個值(int)。現在我的問題是,我想要在onClickListener方法之外訪問該int。我知道onClickListener沒有返回值,但必須有一個解決方法。什麼我想是有與每個點擊的背景變化,我用的是整數跟蹤哪個顏色的背景是目前 這裏是我的代碼片段:從onClickListener檢索值

aa.setOnClickListener(new LinearLayout.OnClickListener(){ 
     int aaColor = 0; 
     public void onClick(View v){ 
      switch (aaColor){ 
      case 0: 
       aa.setBackgroundResource(R.drawable.green); 
       aaColor++; 
       break; 
      case 1: 
       aa.setBackgroundResource(R.drawable.blue); 
       aaColor++; 
       break; 
      case 2: 
       aa.setBackgroundResource(R.drawable.yellow); 
       aaColor++; 
       break; 
      case 3: 
       aa.setBackgroundResource(R.drawable.grey); 
       aaColor++; 
       break; 
      case 4: 
       aa.setBackgroundResource(R.drawable.black); 
       aaColor = 0; 
       break; 
      } 
     } 
    }); 

所以基本上我想存儲aaColor在此方法之外的另一個變量中。我使用.png圖片作爲背景,但如果有更好的方法來跟蹤背景,請告訴我。

回答

1

也許我錯過了一點,但是什麼阻止你在監聽器之外聲明變量?或者在你的類中聲明它爲全局變量'aa'或(cruder)。

0

有3個解決方案,我能想出:

1)可以使aacolor變量static

2)你可以有一個BackgroundManager.java類,它是一個單例,你可以通過調用getInstance()來使用它的方法。 3)最後,如果在類定義中定義了aacolor變量,但在方法中定義該變量,則應該識別該變量。

0

我會親自使用一個單例類。從代碼的任何部分獲取它的引用,並對其屬性進行更改。我認爲單身人士是一個全球「變數」:) 在此link上,您可以找到一個製作精良的示例(在底部),只需將其複製到您的代碼中即可。

-1

你可以用戶SharedPrefences

aa.setOnClickListener(new LinearLayout.OnClickListener(){ 
     SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE); 
     Editor editor = preferences.edit(); 
     int aaColor = 0; 
     public void onClick(View v){ 
      switch (aaColor){ 
      case 0: 
       aa.setBackgroundResource(R.drawable.green); 
       editor.putInt("BgColor", aaColor).commit(); 
       aaColor++; 
       break; 
      case 1: 
       aa.setBackgroundResource(R.drawable.blue); 
       editor.putInt("BgColor", aaColor).commit(); 
       aaColor++; 
       break; 
      case 2: 
       aa.setBackgroundResource(R.drawable.yellow); 
       editor.putInt("BgColor", aaColor).commit(); 
       aaColor++; 
       break; 
      case 3: 
       aa.setBackgroundResource(R.drawable.grey); 
       editor.putInt("BgColor", aaColor).commit(); 
       aaColor++; 
       break; 
      case 4: 
       aa.setBackgroundResource(R.drawable.black); 
       editor.putInt("BgColor", aaColor).commit(); 
       aaColor = 0; 
       break; 
      } 
     } 
    });