Java 从onClickListener检索值
所以我得到了这个onClickListener,在它里面我声明了一个值(int)。现在我的问题是我想在onClickListener方法之外访问该int。我知道onClickListener没有返回值,但必须有一个变通方法。我尝试的是让背景随着每次点击而改变,我使用整数来跟踪当前背景的颜色 以下是我的代码片段:Java 从onClickListener检索值,java,android,Java,Android,所以我得到了这个onClickListener,在它里面我声明了一个值(int)。现在我的问题是我想在onClickListener方法之外访问该int。我知道onClickListener没有返回值,但必须有一个变通方法。我尝试的是让背景随着每次点击而改变,我使用整数来跟踪当前背景的颜色 以下是我的代码片段: aa.setOnClickListener(new LinearLayout.OnClickListener(){ int aaColor = 0; pu
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图片作为背景,但是如果有更好的方法来跟踪背景,请告诉我。也许我没有抓住要点,但是是什么阻止了您在侦听器之外声明变量呢?可以将其声明为“aa”的成员变量,也可以在类中全局声明(cruder)。我可以想出3种解决方案: 1) 您可以使
aacolor
变量static
2) 您可以有一个BackgroundManager.java
类,它是一个单例,您可以通过调用getInstance()
来使用它的方法
3) 最后,如果在类定义中定义
aacolor
变量,而不是在方法中定义,则应该识别它。我个人会使用单例类。从代码的任何部分获取它的引用,并对其属性进行更改。我认为单例是一个全局“变量”:
在此基础上,您可以找到一个制作良好的示例(在底部),只需将其复制到代码中即可。您可以使用SharedReferences
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;
}
}
});