1. 程式人生 > >如何讓AlertDialog 在點選確定或者取消時不消失

如何讓AlertDialog 在點選確定或者取消時不消失

       有時候我們會在AlertDialog 裡面進行一些邏輯判斷,當單擊“確定“按鈕時完成某些工作,如果這些工作失敗,對話方塊不能關閉。而當成功完成工作後,則關閉對話方塊。但是系統預設是每次點選確定按鈕或者取消按鈕,dialog都會消失。原因分析的話這篇文章分析的非常好,我就不再累贅:http://blog.csdn.net/jdsjlzx/article/details/25288749,它裡面也提供了些解決辦法,比如利用反射或者自定義handler,但是感覺有點煩,於是我在stackoverflow上找到了一個更好的方法:

 final AlertDialog mDialog=new AlertDialog.Builder(this).setPositiveButton("確定", null).setNegativeButton("取消", null).create();
        mDialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialog) {
                Button positionButton=mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
                Button negativeButton=mDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
                positionButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this,"確定",Toast.LENGTH_SHORT).show();
                        mDialog.dismiss();
                    }
                });
                negativeButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_SHORT).show();

                    }
                });
            }
        });

        mDialog.show();
嗯,這樣子就可以自己控制dialog的顯示和消失了,so easy。以上程式碼實現的是點選確定,dialog消失,點選取消,dialog不消失。