一.采用匿名内部类
适用于单个事件
例如 下面xml中实现界面布局有一个按钮,然后java中实现当按钮被点击后的事件
xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击我"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
public class MainActivity extends AppCompatActivity {
public Button btn;//用于接收按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
btn= (Button) findViewById(R.id.bt1);//获得button
//为按钮绑定点击监听事件
btn.setOnClickListener(new View.OnClickListener() {//注册监听器
@Override
public void onClick(View v) {
System.out.println("点击了我一下");
}
});
}
详解:
btn.setOnClickListener(new View.OnClickListener() {//注册监听器
@Override
public void onClick(View v) {
System.out.println("点击了我一下");
}
});
代码中为按钮绑定了监听事件,传递的参数为View.OnClickListener接口的实现类对象,这样setOnClickListener方法中就会调用被传递的对象中的onClick方法。重写了onClick方法用于实现btn点击后发生的事件。
二.实现View.OnClickListener接口
使用于多个事件
例如:
xml代码还使用上面的,java代码如下
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
public Button btn;//用于接收按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
btn= (Button) findViewById(R.id.bt1);//获得button
btn.setOnClickListener(this);//注册监听器
}
@Override
public void onClick(View v) {
System.out.println("点击了我一下");
}
}
详解:
btn.setOnClickListener(this);//注册监听器
因为本类实现了View.OnClickListener接口,所以在本类中重写了onClick(View v)方法,在为按钮绑定监听事件setOnClickListener方法中只需传递本类对象即可,因为本类已经是View.OnClickListener接口的实现类了,然后setOnClickListener会根据参数对象调用onClick方法以实现点击事件。
三.在XML布局中使用onClick属性
操作简单但不易维护
java代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
}
public void method(View view){
System.out.println("点击了我一下");
}
}
xml代码:
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击我"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:onClick="method"
/>
在最后一行添加android:onClick=“method”,当被点击了执行java代码中的method方法。
1361

被折叠的 条评论
为什么被折叠?



