1. 程式人生 > >安卓單選對話方塊之帶確定和取消按鈕

安卓單選對話方塊之帶確定和取消按鈕

安卓單選對話方塊很容易就寫好了:

//...
AlertDialog dialog = builder.setTitle(R.string.please_choose)
                .setSingleChoiceItems(itemStrs, chooseItemIndex, new OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                //...
} } ) .show();

就ok了。

在setSingleChoiceItems中,第三個引數回調了which,即選中了的單選按鈕的索引下標。在此回撥中處理,就是按一下選中,立馬做出相應的修改,這樣子缺少了“取消”,“反悔”的過程。
不過其實這樣子就足夠了。增加了確定和取消按鈕,處理反而變得比較麻煩。

下圖封裝了一個性別選擇對話方塊:

這裡寫圖片描述

完整 程式碼如下:


import android.app.Dialog;
import
android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog.Builder; /** * 性別選擇對話方塊 * Created by lu on 2017/9/1 15:42 */ public class ChooseSexDialog { /** * @param
sex 初始時的性別。0女,1男 * @param listener 確定按鈕監聽。 */
public static Dialog show(Context context, int sex, final OnClickOkListener listener){ Builder builder = new Builder(context); //下標正好對應性別的值 String[] itemStrs = new String[]{ context.getString(R.string.girl), context.getString(R.string.boy) }; if (sex > 1) { sex = 1; } final int chooseItemIndex = sex; AlertDialog dialog = builder.setTitle(R.string.please_choose) .setSingleChoiceItems(itemStrs, chooseItemIndex, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (listener != null){ listener.sexValue = which; listener.isItemClick = true; } } } ) .setNegativeButton(R.string.cancel, null) .setPositiveButton(R.string.ok, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (listener!=null){ if (listener.isItemClick){//當點選選擇過 listener.onPressOK(dialog,listener.sexValue); }else {//未選擇過,直接返回上一次選擇的item的下標。 listener.onPressOK(dialog,chooseItemIndex); } } dialog.dismiss(); } }).show(); return dialog; } public static abstract class OnClickOkListener{ private int sexValue; public boolean isItemClick = false; public abstract void onPressOK(DialogInterface alertDialog, int sexValue); } }

——end

相關推薦

對話方塊確定取消按鈕

安卓單選對話方塊很容易就寫好了: //... AlertDialog dialog = builder.setTitle(R.string.please_choose) .setSingleChoiceItems(itemS

android彈出對話方塊中帶有確定取消對話方塊事件的應用

上次看了一個關於android中對話方塊的使用,其中對帶確定和取消的對話方塊講的並不詳細,自己補全了一下,當確定和取消按鈕中有事件時的情況,沒事件時用null就行了 new AlertDialog.Builder(this).setTitle("標題").setMessag

Android 實現對話方塊

專案中有一次用到了單選對話方塊,突然發現因為許久不用,我竟然對這樣一個小小的知識點有點陌生,這還得了?正好最近打算開始寫自己的部落格,不為其他,只為記錄自己的成長,就從這一篇開始吧! 具體實現步驟如下: 1.宣告一個全域性陣列,作為對話方塊列表的內容 String[] Item

Android AlertDialog ————對話方塊

//彈出一個單選對話方塊 private void showSingleDialog() { //[1]構造對話方塊的例項 AlertDialog.Builder builder = new Builder(this); builder.se

中關於對話方塊的四種寫法

單選框public void onClick(View v) { Builder builder = new AlertDialog.Builder(this);// 建立alertDialog物件 builder.setTitle("請選擇你喜歡的科目");

Android 點AlertDialog上的確定取消按鈕,使對話方塊不消失

Android中的AlertDialog彈出框在被點選時, 無論點選哪個按鈕都會關閉視窗。 但是有時候我們不需要它關閉,例如輸入使用者名稱和密碼,輸錯了,提示重新輸入。 那麼怎麼做到點選確定或者取消按鈕不關閉對話方塊呢? 直接上程式碼 new AlertDialog.Bui

dialog點對話方塊之外的區域禁止取消,點返回按鈕取消對話方塊的同時關閉當前activity

private void showIsLoadDraftDialog(final EPrescriptionVO ePrescriptionVO){ AlertDialog.Build

onSubmit 檢查是否有衝突修改,彈出對話方塊讓user確定或者取消

// Warn when two users are editing the same record function onSubmit() { var updatedOn = gel('onLoad_sys_updated_on').value; if (!updatedOn)

對話方塊---框(RadioButton)

簡單概括一下原理:要完成單選框顯示,我們需要使用到RadioGroup和RadioButton(單選框),RadioGroup用於對單選框進行分組,相同組內的單選框只有一個單選框能被選中。(例子程式碼請見下方備註欄)  RadioGroup.check(R.id.dotNe

對話方塊----建立多選項列表的對話方塊

1、我們在佈局檔案中用一個按鈕進行測試,給按鈕註冊事件,下面是佈局檔案的程式碼: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="h

(shell練習1)zenity圖形介面資訊對話方塊對話方塊,以及while,for迴圈的練習

涵蓋內容包括 1,shell的while迴圈 2,shell的for迴圈 3,shell關於字串的擷取(精華之處) 4,shell的選擇分支語句if 5,zenity資訊對話方塊 6,zenity單選對話方塊 7,zenity複選對話方塊  8,shell不

Android 對話方塊總結(確定取消,多,進度條,具體的進度條)

/** * 彈出確定取消對話方塊 * * @param view */ public void click01(View view) { // 工廠設計模式,得到建立對話方塊的工廠 AlertDialog

-深入淺出MVVM教程》應用篇

getter apk 更新 processor 技術 tac bind end mat 背景 這幾年 MVP 架構在安卓屆非常流行,幾乎已經成為主流框架,它讓業務邏輯 和 UI操作相對獨立,使得代碼結構更清晰。 MVVM 在前端火得一塌糊塗,而在安卓這邊卻基本沒見到幾個人在

Android基礎控件——AlertDialog、ProgressDialog實現對話框、多對話框、進度條對話框、輸入框對話

事先 pre 進度 技術分享 android基礎 水平 介紹 iss support AlertDialog、ProgressDialog實現單選對話框、多選對話框、進度條對話框、輸入框對話框 事先說明: 對話框應選用android.support.v7這個包底下的組件

投屏助手(B1358)輔助調試

技術 ash 命令 tro mob 16px lan log 遠程控制 Android遠程桌面助手的中文版——安卓投屏助手正式上線。安卓投屏和遠程控制的軟件其實已經非常多了,如Vysor、Total Control、Mobizen、Apo

C# 對話方塊FolderBrowserDialog

像saveFileDialog,openFileDialog,colorDialog,fontDialog前面已經涉及了,還差一個FolderBrowserDialog,所有對話方塊控制元件就介紹完了,下面就解決完這個小尾巴。 1、新增控制元件textBox1,button1 2、程式

中高階開發面試知識點——快取

前言 幾乎所有的專案都做了快取,但是快取做的怎麼樣,其實只有我們自己知道。快取做的好,沒有網路也能流暢的使用;再多的資料請求都不會出現卡頓延遲等待很久的情況。 程式中除了圖片快取(三級快取),還有資訊快取。當用戶無法聯網時,app會預設顯示快取的資料。 前言快取方式 SQLite 下載完資料檔案後,

home鍵重啟

主要原因是:每次啟動Intent導致新建立Task的時候,該Task會記錄導致其建立的Intent;而如果後續需要有一個新的與建立Intent完全一致(完全一致定位為:啟動類,action、category等等全部一樣,不可多項也不可缺少),那麼該Intent並不會觸發Activity的新建啟動,而只會將已經

Android AlertDialog ————多對話方塊

//彈出一個多選對話方塊 private void showMutilDialog() { //[1]構造對話方塊的例項 AlertDialog.Builder builder = new Builder(this); builder.setT

Android開發(AlertDialog對話方塊自定義佈局列表不共存的替代辦法)

這個實現功能花了一點時間,當時忙了很晚,只怪當時沒有想出其他解決辦法。言歸正傳。 前幾天有這麼一個小夥伴,在開發有這樣的地圖app,該地圖app有多個地圖圖層,這些地圖圖層可提供給使用者操作,比如說圖層的顯示控制,以及選擇需要的圖層供查詢。由於該地圖app在主介面已經佈局很