Потому что это одно из правил языка программирования.Вне метода или функции вы можете объявить статические блоки, объявить другие функции или сделать присваивание.setOnClickListener
- это метод, который принимает в качестве аргумента interface
и выглядит примерно так:
public interface OnClickListener {
void onClick(View v);
}
И на самом деле существует пара реализаций.Один из них вы использовали в примере выше, второй - implement View.OnClickListener
интерфейс и метод переопределения onClick(View view)
, теперь вы можете подписать свои представления на этот интерфейс numbers.setOnClickListener(this)
, и если у вас есть более одного подписанного представления, вы можете различить ихвнутри onClick(View view)
, проверяя id
как:
public void onClick(View view){
switch(view.getId()){
case R.id.numbers:
break;
}
}
И есть еще одна реализация, которая будет выглядеть так:
public OnClickListener onClick = new OnClickListener() {
@Override
public void onClick(View v) {
}
};
Теперь вы можете использовать: numbers.setOnClickListener(onClick)