文章目录
方法一:控件的onClick属性
方法二:内部类
方法一:控件的onClick属性
利用控件自带的onClick属性,指定事件处理函数名称即可实现控件点击事件的处理
这里有个小技巧就是当设置完控件的onClick属性后,它会报没有找到对应事件处理函数的错误,此时点击左侧的警告提示下拉,选择创建事件处理函数到对应的Activity中,如下图所示:
代码
页面布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:onClick="btn1"
android:layout_width="match_parent"
android:layout_height="80dp"
android:text="按钮1"
>
</Button>
</RelativeLayout>
Activity文件:
package com.example.app01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//页面创建初始化时
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this, "欢迎使用", Toast.LENGTH_SHORT).show();
}
//按钮1的事件响应处理函数
public void btn1(View view) {
//界面消息提示框
Toast.makeText(this, "你刚刚点击了按钮1", Toast.LENGTH_SHORT).show();
}
}
运行:
方法二:内部类
即在Activity文件主类的内部创建一个实现了事件处理接口(View.OnClickListener)的内部类,主要步骤如下:
- 第一步先设置存放事件源对象的变量
- 第二步通过findById()的方法根据控件的id名称获取到事件源对象
- 第三步给事件源对象设置事件监听器,参数是内部类对象
- 第四步在内部类中重写onClick()方法,在其中书写事件响应代码
代码
页面布局文件:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="80dp"
android:text="按钮2"
>
</Button>
</RelativeLayout>
Activity文件:
package com.example.app01;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
//存储事件源对象
private Button button2;
//页面创建初始化时
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
Toast.makeText(this, "欢迎使用", Toast.LENGTH_SHORT).show();
}
public void initView(){
//获取事件源对象
button2=findViewById(R.id.btn2);
//设置对应的监听器
button2.setOnClickListener(new clickListener());//以实现了事件处理接口的内部类作为监听器参数
}
//创建内部类并实现了事件处理接口
public class clickListener implements View.OnClickListener{
//事件响应代码
@Override
public void onClick(View v) {
Log.d("message","你刚刚点击了按钮2");
}
}
}
运行:
END.