Android——监听Button(按钮)单击事件

在Android开发中实现button(按钮)点击事件的方法有几种,这里介绍其中三种:

方法一:当前类实现OnClickListener接口并在其必须实现的onClick方法中添加事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ButtonActivity extends AppCompatActivity implements OnClickListener {

TextView text;
@Override

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
text = (TextView)findViewById(R.id.btn_out);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(this);
}

public void onClick(View view){
text.setText("OnClickListener接口");
}
}
方法二:匿名内部类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ButtonActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
Button btn = (Button)findViewById(R.id.btn);
final TextView text = (TextView)findViewById(R.id.btn_out);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
text.setText("匿名内部类");
}
});
}
}
方法三:自定义方法绑定按钮

在.xml文件(布局文件)中给Button加上属性android:onClick="MyClick"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;

public class ButtonActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button);
}

void MyClick(View btn){
((TextView)findViewById(R.id.btn_out)).setText("自定义监听方法");
}
}
推荐使用方法三
多个按钮使用同一个监听方法时,可使用按钮的 id 来区分。判断可用 if()...else if()... 或者 switch()