如何在android中使用函数内部的公共变量?

时间:2015-12-14 19:56:13

标签: android

在android中我有以下情况(不工作代码,只是为了显示我想要谈论的内容):

public class Test extends ArrayAdapter<MyDataObject> {

    public final int number = 4;

    public Test(int number) {
        this.number = number;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        // lines of code 
        imageView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Log.d("TESTTEST", "Number:  " + this.number);
            }
        });
        // other lines of code
        // ...

变量number是公开的,但我无法在onClick内引用其内容。

是否有一种简单的方法可以在函数number中使用变量onClick的内容?或者我需要一个其他和不相关的类,函数,方法,接口的灵气来源......?

1 个答案:

答案 0 :(得分:1)

删除

中的this个关键字
Log.d("TESTTEST", "Number:  " + number);

this引用当前的侦听器实例,而不是父类。

您还可以使用以下内容获取number

Log.d("TESTTEST", "Number:  " + Test.this.number);

此外,setNumber正在尝试将值设置为最终变量,除非从变量声明中删除final,否则不会编译。

如果你的监听器是这样的话,在方法中使用this

imageView.setOnClickListener(new View.OnClickListener() {
        int number = 0; // in this case you can use 'this' 
        @Override
        public void onClick(View arg0) {
            Log.d("TESTTEST", "Number:  " + this.number);
        }
    });