2015-10-04 196 views

回答

2

关于匿名类的一点是你不需要引用它们。如果你确实需要参考一个类,它不应该是匿名的。

只因为OnClickListener s通常是匿名的并不意味着他们必须是。你可以这样做。

private static final class MyListener implements View.OnClickListener { 

    private int field; 

    private int getField() { return field; } 

    // constructor and onClick() method 
} 

然后

MyListener myListener = new MyListener(); 
view.setOnClickListener(myListener); 
int a = myListener.getField(); 
0

这是一个有点棘手访问的变量出现在OnClickListener,但你有两种选择:

  1. 创建一个可以存储一些值类,在外部创建一个实例并将其放到最终。最后,例如用setter修改类的内部值。

  2. 如果您的变量过于简单,无法创建对象,请在长度为1的最终数组外部创建一个对象,并在匿名类中指定该0位置的值。

1

为什么要麻烦,要么命名您的班级,要么将该变量移动到外部班级。