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

Android AlertDialog 單選列表實現:選項選中回調與 Toast 提示完整示例

     編輯:程式設計疑難解答

需求還原

  • 彈窗標題:選擇輸入方式
  • 單選項:「手動輸入」、「攝像頭輸入」
  • 點擊「確認」後,底部 Toast 顯示「選擇的輸入方式:XX輸入」

核心 API:setSingleChoiceItems

AlertDialog.Builder builder = new AlertDialog.Builder(this);
final String[] items = {"手動輸入", "攝像頭輸入"};
int checkedItem = 0; // 默認選中索引,-1 表示無

builder.setTitle("選擇輸入方式")
       .setSingleChoiceItems(items, checkedItem, new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               // which 即為用戶點選的項目索引 (0 或 1)
               checkedItem = which; // 記錄選擇
           }
       })
       .setPositiveButton("確認", (dialog, which) -> {
           String selected = items[checkedItem];
           Toast.makeText(MainActivity.this, 
               "選擇的輸入方式:" + selected, Toast.LENGTH_SHORT).show();
           // 這裡處理業務邏輯
       })
       .setNegativeButton("取消", null)
       .show();

關鍵點解析

  • which 參數:單選列表項目的索引(0-based),非按鈕 ID。
  • 需用成員變量或 final 數組保存選中索引,因為 `onClick` 在用戶點選項目時觸發,而非點「確認」時。
  • setPositiveButton 的回調中讀取已保存的索引,取對應文本。

進階:自定義佈局 (可選)

若需圖標、複雜佈局,改用 setAdapter() 配合 ListView 或 RecyclerView,但單選邏輯需自行維護(`setChoiceMode(ListView.CHOICE_MODE_SINGLE)`)。

常見坑

  1. 在 `onClick(DialogInterface, int which)` 中直接 `dialog.dismiss()` → 列表點一下就消失,用戶無法確認。只記錄索引,不關閉對話框。
  2. 未處理「取消」情況:`checkedItem` 保留上次值,建議 `setNegativeButton` 中重置為 -1。
  3. Activity 重建導致對話框丟失:使用 DialogFragment 托管生命周期。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved