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來實現對話框不消失的功能,試了一下,沒成功報了異常,以上方法還比較通俗易懂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章