2012-01-22 9 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)として宣言してください。

1)あなたはaacolor変数staticを行うことができます。

0

は、私が思い付くことができます3つの解決策があります。

2)BackgroundManager.javaクラスがシングルトンであり、そのメソッドをgetInstance()と呼ぶことができます。

3)最後に、aacolor変数をクラス定義内に定義し、メソッド内で定義しない場合は、その変数を認識する必要があります。

0

私は個人的にシングルトンクラスを使用します。コードのどの部分からも参照を取得し、その属性を変更します。私はシングルトンをグローバルな "変数"と考えています:) このlinkでは、下にあるよく作られた例を見つけることができます。それをあなたのコードにコピーすればOKです。

-1

することはでき、ユーザAの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; 
      } 
     } 
    }); 
関連する問題