1. 程式人生 > >Android 點選AlertDialog上的確定和取消按鈕,使對話方塊不消失

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

Android中的AlertDialog彈出框在被點選時, 無論點選哪個按鈕都會關閉視窗。

但是有時候我們不需要它關閉,例如輸入使用者名稱和密碼,輸錯了,提示重新輸入。

那麼怎麼做到點選確定或者取消按鈕不關閉對話方塊呢?

直接上程式碼

new AlertDialog.Builder(this)
                        .setTitle(R.string.SBCfgPasswordTitle)
                        .setView(passwdEditText)
                        .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                canCloseDialog(dialogInterface, false);//不關閉對話方塊
                            }
                        })
                        .setNeutralButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                //To change body of implemented methods use File | Settings | File Templates.
                                canCloseDialog(dialogInterface, true);//關閉對話方塊
                            }
                        })
                        .show();
   //  關鍵部分在這裡
   private void canCloseDialog(DialogInterface dialogInterface, boolean close) {
        try {
            Field field = dialogInterface.getClass().getSuperclass().getDeclaredField("mShowing");
            field.setAccessible(true);
            field.set(dialogInterface, close);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }