Закрыть пользовательский диалог? - PullRequest
9 голосов
/ 13 мая 2010

Я пытаюсь создать собственный диалог, чтобы отобразить представление в этом диалоге. Это код строителя:

//Getting the layout
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog_simple,
                               (ViewGroup) findViewById(R.id.rlDialogSimple));

//Change Text and on click
TextView tvDialogSimple = (TextView) layout.findViewById(R.id.tvDialogSimple);
tvDialogSimple.setText(R.string.avisoComprobar);
Button btDialogSimple = (Button) layout.findViewById(R.id.btDialogSimple);
btDialogSimple.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        //Do some stuff

        //Here i want to close the dialog
    }
});

AlertDialog.Builder builder = new AlertDialog.Builder(AcPanelEditor.this);
builder.setView(layout);
AlertDialog alert = builder.create();
alert.show();

Итак, я хочу закрыть диалог в onClick от btDialogSimple. Как я могу это сделать? Я не знаю, как вызвать метод dismiss из onclicklistener.

Мои кнопки имеют собственный макет, поэтому я не хочу создавать builder.setPositiveButton.

Есть идеи?

Ответы [ 4 ]

17 голосов
/ 13 мая 2010

Вы должны сохранить AlertDialog в свойстве родительского класса, а затем использовать что-то вроде этого:

class parentClass ........ {
private AlertDialog alert=null;
........
public void onClick(View v) {
        //Do some stuff

        //Here i want to close the dialog
        if (parentClass.this.alert!=null)            
        parentClass.this.alert.dismiss();
    }
........
this.alert = builder.create();
this.alert.show();

}

7 голосов
/ 10 мая 2011

Думаю, лучше позвонить

dismissDialog(DIALOG_ID);

Не сделает ли AlertDialog свойством класса поражение цели возврата диалога из onCreateDialog ()?

0 голосов
/ 03 июля 2014

Использовать AlertDialog экземпляр, например mAlertDialog как глобальная переменная. И звоните mAlertDialog.dismiss(); внутри onClick()

0 голосов
/ 01 декабря 2013

Я использую

public  Dialog dialog;

buton_sil.setOnClickListener(new View.OnClickListener() {

            @ Override
            public void onClick(View v) {

                   DialogClose();
                   }
}):


public void DialogClose() {
        dialog.dismiss();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...