所以我得到了这个onClickListener,并在其中声明了一个值(int)。现在我的问题是我想在onClickListener方法之外访问该int。我知道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图片作为背景,但如果有更好的方法来跟踪背景,请告诉我。
答案 0 :(得分:1)
也许我错过了这一点,但是什么阻止你只是在侦听器之外声明变量?在类中全局声明它为'aa'或(cruder)的成员变量。
答案 1 :(得分:0)
我可以提出3种解决方案:
1)您可以制作aacolor
变量static
。
2)你可以拥有一个单身的BackgroundManager.java
类,你可以通过调用getInstance()
来使用它的方法。
3)最后,如果在类定义中定义aacolor
变量但不在方法中定义,则应该识别它。
答案 2 :(得分:0)
我个人会使用单身人士课程。从代码的任何部分获取它的引用并更改它的属性。我认为单身是一个全球性的“变量”:) 在这个link上你可以找到一个做得很好的例子(在底部),只需将其复制到你的代码中即可。
答案 3 :(得分:-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;
}
}
});