首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 多按鈕點擊事件統一處理:實現 OnClickListener 並用 switch 判斷 ID

     編輯:程式設計綜合問答

XML 佈局

<Button android:id="@+id/btn_0" android:text="0" />
<Button android:id="@+id/btn_1" android:text="1" />
... 共 16 個按鈕

Activity 實現 OnClickListener

public class CalculatorActivity extends Activity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_calculator);

        int[] btnIds = {R.id.btn_0, R.id.btn_1, R.id.btn_2, R.id.btn_3,
                        R.id.btn_4, R.id.btn_5, R.id.btn_6, R.id.btn_7,
                        R.id.btn_8, R.id.btn_9, R.id.btn_add, R.id.btn_sub,
                        R.id.btn_mul, R.id.btn_div, R.id.btn_eq, R.id.btn_clr};
        for (int id : btnIds) {
            findViewById(id).setOnClickListener(this);
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_0: case R.id.btn_1: case R.id.btn_2: case R.id.btn_3:
            case R.id.btn_4: case R.id.btn_5: case R.id.btn_6: case R.id.btn_7:
            case R.id.btn_8: case R.id.btn_9:
                appendNumber(((Button)v).getText().toString());
                break;
            case R.id.btn_add: setOperator("+"); break;
            case R.id.btn_sub: setOperator("-"); break;
            case R.id.btn_mul: setOperator("*"); break;
            case R.id.btn_div: setOperator("/"); break;
            case R.id.btn_eq: calculateResult(); break;
            case R.id.btn_clr: clearDisplay(); break;
        }
    }
    // ... 具體邏輯方法
}

優勢

  • **單一監聽器**,代碼集中,易維護。
  • 避免 16 個匿名類創建開銷。
  • ID 數組批量綁定,新增按鈕只需加入數組與 case 分支。

替代:Data Binding / ViewBinding

現代專案可用 ViewBinding 直接引用按鈕並設置 Lambda,更類型安全。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved