监听三要素
事件源、事件、事件监听器
注意监听器会被覆盖,
注意在布局中写的是最先注册的
代码
EventActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.example.myapplication.util.ToastUtil;
public class EventActivity extends AppCompatActivity implements View.OnClickListener {
private Button mBtnEvent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_event);
mBtnEvent=findViewById(R.id.btn_event);
//内部类实现
mBtnEvent.setOnClickListener(new Onclick());
//匿名内部类实现
mBtnEvent.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("匿名内部类","click");
ToastUtil.showMsg(getApplicationContext(),"click...");
}
});
// //通过事件源所在的类实现
// mBtnEvent.setOnClickListener(EventActivity.this);
// //通过外部类实现
// mBtnEvent.setOnClickListener(new MyClickListener(EventActivity.this));
}
@Override
public void onClick(View view) {
//实现接口
switch(view.getId()){
case R.id.btn_event:
ToastUtil.showMsg(getApplicationContext(),"click...");
break;
}
}
class Onclick implements View.OnClickListener{
//内部类实现点击事件
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.btn_event:
Log.d("内部类","click");
ToastUtil.showMsg(getApplicationContext(),"click...");
break;
}
}
}
public void show(View v){
switch (v.getId()){
case R.id.btn_event:
Log.d("属性","click");
ToastUtil.showMsg(EventActivity.this,"click...");
break;
}
}
}
activity_event.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btn_event"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="click me"
android:textAllCaps="false"
android:onClick="show"/>
<!-- 可以直接添加onClick属性,此时需定义同名的方法-->
</LinearLayout>
MyClickListener.java
package com.example.myapplication;
import android.app.Activity;
import android.view.View;
import com.example.myapplication.util.ToastUtil;
public class MyClickListener implements View.OnClickListener {
private Activity mActivity;
public MyClickListener(Activity activity){
this.mActivity=activity;
}
@Override
public void onClick(View view) {
ToastUtil.showMsg(mActivity,"click...");
}
}