Android實現Button按鈕點擊事件監聽的幾種方式

工做中的項目一般有多我的一塊兒開發,而每一個人都有每一個人的代碼風格,不注重代碼規範一般是前人挖坑,後人採坑,下降項目開發效率及加大維護難度,這裏分享幾種安卓按鈕點擊事件監聽的實現方式。android

方式一直接在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);}
相關文章
相關標籤/搜索