有两种方法可以处理按钮中的点击事件
- 在 xml 布局中单击
- 使用 OnClickListener
在 XML 布局中单击
当用户单击按钮时,Button 对象会收到一个点击事件。
要使单击事件起作用,请将android:onClick
属性添加到 XML 布局中的 Button 元素。此属性的值必须是您要调用以响应单击事件的方法的名称。承载布局的 Activity 必须实现相应的方法。
笔记:
如果您在代码中使用此事件处理程序,请确保您的 MainActivity 中有该按钮。如果您在片段中使用此事件处理程序,它将不起作用,因为 onClick 属性仅适用于 Activity 或 MainActivity。
例子:
在 MainActivity 类中
/** Called when the user touches the button */
public void sendMessage(View view)
{
// Do something in response to button click
}
确保您的 sendMessage 方法应具有以下内容:
使用 OnClickListener
您还可以以编程方式而不是在 XML 布局中声明 click 事件处理程序。此事件处理程序代码是首选,因为它可以在活动和片段中使用。
有两种方法可以以编程方式执行此事件处理程序:
- 在您的活动或片段中实现 View.OnClickListener。
- 创建新的匿名 View.OnClickListener。
在您的活动或片段中实现 View.OnClickListener
要在您的 Activity 或 Fragment 中实现View.OnClickListener
,您必须覆盖您的类上的onClick
方法。
首先,通过调用findViewById()
方法将xml布局中的按钮链接到Java 。
R.id.button_send
指的是 XML 中的按钮。
mButton.setOnClickListener(this);
意味着您要为“在此实例上”的 Button 分配侦听器,此实例代表OnClickListener
,因此您的类必须实现该接口。
主要活动代码:
public class MainActivity extends AppCompatActivity
implements View.OnClickListener {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.button_send);
mButton.setOnClickListener(this);
}
@Override
public void onClick(View view)
{
switch (view.getId()) {
case R.id.button_send:
// Do something
}
}
}
如果您有多个按钮点击事件,您可以使用 switch case 来确定点击了哪个按钮。
创建匿名 View.OnClickListener
通过调用findViewById()
方法从 XML 链接按钮,并使用setOnClickListener()
方法设置 onClick 侦听器。
主要活动代码:
public class MainActivity extends AppCompatActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.button_send);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view)
{
// Do something
}
});
}
}
setOnClickListener
将OnClickListener
对象作为参数。基本上它在参数中创建一个匿名子类 OnClickListener 。
当您可以使用匿名子类创建新线程时,这就像在Java一样。