我是Android开发人员的新手。我读了一些关于它的书。并且所有作者都强烈建议使用匿名类而不是类重新定义。
他们说
TextView txtTitle;
...
txtTitle.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
优于
txtTitle.setOnClickListener(new MyOnClickListener(position));
...
private class MyOnClickListener implements OnClickListener{
...
}
有人能解释我为什么吗?
Ofc,如果我将重新定义类用于许多不同的对象,这将是修改的问题。
但是如果我只将自己的类用于特定的对象,那么我的类的逻辑不会强烈改变,我可以使用它吗?或者我应该使用匿名类?
答案 0 :(得分:11)
匿名类可以访问最终的外部变量,因此使用它可能更方便。例如:
final String x = "123";
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// You can acces "x" here.
}
});
另外,这是编码风格的问题。使用匿名可以导致代码更加冗长,但同时也更容易理解。
此外,非匿名类可以在多个位置实例化。
答案 1 :(得分:3)
为什么不在Activity类中实现OnClickListener?
class MyActivity extends Activity implements OnClickListener