Как отключить пользовательский диалог с помощью пользовательской кнопки в диалоговом окне?

#android #dialog #dismiss

#Android #диалог #отклонить

Вопрос:

 Hi there,

    @Override
    protected Dialog onCreateDialog(int id) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        inviteView = getLayoutInflater().inflate(R.layout.invite_dialog, null);
        builder.setView(inviteView);
        sendSmsButton = (Button) inviteView.findViewById(R.id.sendSMSButton);
        sendEmailButton = (Button) inviteView.findViewById(R.id.sendEmailButton);


        builder.setTitle(R.string.invite_callrz_title);
        sendSmsButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });

        sendEmailButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });
        builder.setNegativeButton(R.string.cancelItem,
                new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
        return builder.create();
    }
  

У меня есть пользовательский макет с 2 кнопками на нем.Я также использую nagativeButton по умолчанию для отключения диалога. Мой вопрос в том, что я хотел бы отключить панель диалога при нажатии пользовательских кнопок. В принципе, когда кнопка нажата, она выполнит некоторые действия и удалит диалоговое окно. какой метод я должен вызвать?

Комментарии:

1. что произойдет, если вы введете dialog.cancel(); в метод sendEmailButton или метод sendSmsButton click?

2. я пробовал, что не сработало. потому что он жалуется, что у него нет DialogInterface. Но у меня это сработало. в принципе, я могу вызвать dismissDialog (int id); из activity, чтобы закрыть панель диалога.

Ответ №1:

попробуйте это

 AlertDialog.Builder builder = new AlertDialog.Builder(this);
AlertDialog alertDialog; 
alertDialog = builder.create();

sendSmsButton = (Button) builder.findViewById(R.id.sendSMSButton);

sendSmsButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            alertDialog.dismiss();
        }
    });