工作中的项目通常有多个人一起开发,而每个人都有每个人的代码风格,不注重代码规范通常是前人挖坑,后人采坑,降低项目开发效率及加大维护难度,这里分享几种安卓按钮点击事件监听的实现方式。
方式一:直接在Activity中实现View.OnClickListener接口,重写onClick方法,提供所有按钮监听事件入口。这是实际项目中最常用的方式,尤其在页面有多个按钮的情况下比较适用。
package com.example.myapp; import android.app.Activity;import android.os.Bundle;import android.view.View;import android.widget.Button; public class MainActivity extends Activity implements View.OnClickListener { private Button button1; private Button button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = findViewById(R.id.button1); button2 = findViewById(R.id.button2); //注册监听器 button1.setOnClickListener(this); button2.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button1: onClickButton1(view); break; case R.id.button2: onClickButton2(view); break; default: break; } } private void onClickButton1(View view) { //处理逻辑 } private void onClickButton2(View view) { //处理逻辑 }} 通常页面会有多可按钮,可以在OnClick方法中通过View.getId()获取到发生点击事件的按钮Id,再进行相应的处理;建议不要直接在OnClick方法中直接处理,因为多个按钮的处理逻辑写在同一个方法中,方法体较长,可读性降低。 方式二:按钮注册监听器时直接实现监听接口,即匿名内部类的方式实现。页面只有单个按钮时比较常用。
register_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(TextUtils.isEmpty(userName_et.getText().toString()) || TextUtils.isEmpty(pwd_et.getText().toString())) { Toast.makeText(RegisterActivity.this, "用户名密码不能为空", Toast.LENGTH_LONG).show(); return; } //注册 }}); 熟悉函数式编程的话,可直接写lambda表达式,代码更加简洁。 方式三:自定义一个监听器,实现View.OnClickListener接口,这与方式一类似,方式一直接在Activity中实现View.OnClickListener接口,因此它本身就是一个监听器。这里要另外实现一个监听器类。class MyListener implements View.OnClickListener{ @Override public void onClick(View view) { //处理逻辑 }} 最后别忘了在Activity中注册自定义的监听器
register_btn.setOnClickListener(new MyListener()); 方式四:在XMl布局文件中的OnClick属性直接注册Activity中的处理方法,Activity中的点击事件处理方法需要时public方法,底层会通过反射方式调用。这种方法不好维护,通常不好找按钮对应点击事件处理方法,不建议使用
XML布局文件:<ImageButton android:layout_marginTop="50dp" android:layout_height="49dp" android:layout_width="55dp" android:layout_gravity="center" android:onClick="activate" /> Activity中写相应的处理方法,访问权限是public:public void activate(View v) { Intent intentToActivate = new Intent(); intentToActivate.setClass(this, LoginActivity.class); startActivity(intentToActivate);}
原文地址:https://www.cnblogs.com/stom/p/11089156.html
时间: 2024-10-11 06:20:47