1. 程式人生 > >Android Dialog點選按鈕不關閉對話方塊

Android Dialog點選按鈕不關閉對話方塊

在Android實際開發中,我們可能常常需要彈出一個Dialog,讓使用者輸入一些資料,而對使用者的輸入資料還需要進行一些比如不能為空的驗證。但是在正常情況下,使用者點選Dialog中的按鈕後窗口會隨即關閉,使用者可能看不到你的錯誤提示,這樣會顯得很不友好。那有沒有一種解決辦法,可以讓使用者輸入出錯時單擊按鈕,繼續留在頁面而不是關閉本dialog呢?今天在做demo中剛好碰到了這個問題,下面介紹一下我的解法辦法。

首先,是一個普通的自定義dialog的程式碼引入

LayoutInflater inflater = LayoutInflater.from(this);
        View dialogView = inflater.inflate(R.layout.registered_layout, null
); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(dialogView); builder.setTitle(mRegister); builder.setInverseBackgroundForced(true); builder.setPositiveButton("確定", null); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override
public void onClick(DialogInterface dialog, int which) { } }); final AlertDialog dialog = builder.create(); //建立對話方塊 dialog.show(); dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) { }); mSendSms.setOnClickListener(new android.view.View.OnClickListener() { @Override public void onClick(View v) { } });

接下來,講解一下:

builder.setPositiveButton("確定", null);

將點選事件設定為空,因為,dialog內部程式碼,就是設定點選事件點選了之後隱藏的功能,所以我們要設定為null
接下來:
我們通過

  final AlertDialog dialog = builder.create();  //建立對話方塊

獲取到dialog,接著

dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                });

這樣子後,點選了就不會消失了
如果想要消失,只要在想要消失的流程間加上

dialog.dismiss();

就OK了,這樣實現還挺方便的,適合初學者們用,之前看了一個是通過Feil來查詢變數mShowing來實現對話方塊不消失的功能,試了一下,沒成功報了異常,以上方法還比較通俗易懂