从onClickListener中检索值

时间:2012-01-22 14:52:38

标签: java android

所以我得到了这个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图片作为背景,但如果有更好的方法来跟踪背景,请告诉我。

4 个答案:

答案 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;
            }
        }
    });