Возможный дубликат:
Разница между событием OnClick() и OnClickListener?
Я полуновичок в разработке Android, и когда я впервые начал, я старался избегать использования макета xml любыми средствами, поэтому некоторые из моих предыдущих проектов связаны с кнопками, которые явно создают OnClickListener и реализуют его как анонимный внутренний класс, Например:
final Button button = new Button(this);
button.setText("Click to change second line of text");
OnClickListener buttonListener = new View.OnClickListener() {
boolean clicked = false;
int numClicks = 0;
@Override
public void onClick(View v) {
if(numClicks > 5) {
button.setText("STOP IT");
}
numClicks++;
if(clicked == false){
clicked = true;
tv2.setText("Text Changed on Button Click");
}
else
{
clicked = false;
tv2.setText("Click again");
}
}
};
button.setOnClickListener(buttonListener);
Но по мере того, как я больше знаком с андроидом, я начал понимать значение макетов xml и реализованных кнопок, таких как
<Button
android:id="@+id/button1"
android:layout_height = "wrap_content"
android:layout_width ="wrap_content"
android:text = "lets do this"
android:onClick = "DoIt"
/>
В макете xml, где DoIt был определен в java.
Мой вопрос в том, являются ли эти 2 метода функционально одинаковыми? Есть ли OnClickListener, который определяется компилятором где-то за кулисами? Есть ли какие-либо функции, которыми вы торгуете, используя один или другой способ?