摘要:
Android中获取到按钮后,我们一般会为其添加点击事件,而android中的点击事件共有四种写法,下面我们通过代码一一去实现。
第一种方法:通过布局文件中控件的属性
基本步骤如下:
1、在activity_login.xml中给Button控件添加Android:onClick=”action”属性,
2、在Activity中实现action方法,action方法必须满足如下三个条件:
(1)方法的访问修饰符必须是public;
(2)方法的名称必须跟android:onClick=”action” 中的名称完全一致
(3)形参必须是View类型
示例代码如下:
layout布局代码:
第二种方法:通过内部实现类
基本步骤如下:
1、新建一个ClickListener类并实现View.OnClickListener接口,
2、重写View.OnClickListener接口中的OnClick(View view)方法,
3、给Button绑定一个监听器,并监听一个点击事件
示例代码如下:
第三种方法:通过Activity实现OnClickLitener,
基本步骤如下:
1、让LoginActivity直接实现View.OnClickListener
2、在LoginActivity类中重写onClick方法
3、给Button绑定一个监听器,并监听一个点击事件。
注:此时setOnClickListener传入的是this
示例代码如下:
第四种方法:使用匿名内部类
基本步骤如下:
1、给Button绑定一个监听器,并监听一个点击事件
2、在setOnClickListener方法中直接传入一个OnClickListener对象,并实现OnClick方法
示例代码如下:
总结:
事件写法的思路:
1、根据控件ID去获取控件;
2、设置控件的事件;
3、在事件方法中处理事件。
完整LoginActivity代码:
package com.gx.hotel.ui;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.gx.hotel.R;
public class LoginActivity extends AppCompatActivity /* implements View.OnClickListener*/{
//控件
private Button btnSubmit;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置布局
setContentView(R.layout.activity_login);
//获取控件 ctrl+alt+f
btnSubmit = findViewById(R.id.btn_login_submit);
//②创建内部实现类对象
//ClickListener clickListener=new ClickListener();
//②设置点击事件
//btnSubmit.setOnClickListener(clickListener);
//③设置点击事件
//btnSubmit.setOnClickListener(this);
//④匿名内部实现类
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(LoginActivity.this,"提示:你点击了按钮, 匿名内部实现类",Toast.LENGTH_LONG).show();
}
});
}
//③ Activity实现OnClickLitener
//@Override
//public void onClick(View v) {
// switch (v.getId()){
// case R.id.btn_login_submit:
// Toast.makeText(LoginActivity.this,"提示:你点击了按钮, Activity实现OnClickLitener ",Toast.LENGTH_LONG).show();
// break;
// }
//}
//IDEA alt+Enter
//②第二种事件写法:内部实现类
//class ClickListener implements View.OnClickListener{
//
// @Override
// public void onClick(View v) {
// int id=v.getId();
// switch (id){
// case R.id.btn_login_submit:
// Toast.makeText(LoginActivity.this,"提示:你点击了按钮,内部实现类",Toast.LENGTH_LONG).show();
// break;
// }
// }
//}
/*①第一种事件写法:结合layout文件声明方法 不推荐使用*/
//public void btnClick(View view){
// //参数 Context,text,duration
// //上下文,要提示的信息,提示显示的时长
// Toast.makeText(LoginActivity.this,"提示:你点击了按钮",Toast.LENGTH_LONG).show();
//}
}