Android закрыть PopUp

Как я могу закрыть всплывающее окно при нажатии кнопки?

.dismiss(); а также .cancel(); не работает для меня, или я делаю что-то не так.

    //Game Paused PopUp
private void PauseMenu() {

    final AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this);

    LayoutInflater inflater = getLayoutInflater();
    final View popupView = inflater.inflate(R.layout.pause_menu, null);
    helpBuilder.setView(popupView);
    Button resume = (Button) popupView.findViewById(R.id.resume);

    resume.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //Close PopUp
        }
    });

    AlertDialog helpDialog = helpBuilder.create();
    helpDialog.show();
}

@Override
public void onBackPressed() {
    PauseMenu();
}

Спасибо за любую помощь:)

И, пожалуйста, не голосуйте без комментариев!

2 ответа

Решение
private void PauseMenu() {

    final AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this);

    LayoutInflater inflater = getLayoutInflater();
    final View popupView = inflater.inflate(R.layout.pause_menu, null);
    helpBuilder.setView(popupView);
    Button resume = (Button) popupView.findViewById(R.id.resume);

    final AlertDialog helpDialog = helpBuilder.create();
    resume.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            helpDialog.dismiss();
        }
    });

    helpDialog.show();
}

@Override
public void onBackPressed() {
    PauseMenu();
}

Вам нужно будет сохранить ссылку на диалог, чтобы отклонить его.

Следующее должно работать:

private void displayPauseMenu() { // method names are always lower-case!!

    final AlertDialog.Builder helpBuilder = new AlertDialog.Builder(this);

    LayoutInflater inflater = getLayoutInflater();
    final View popupView = inflater.inflate(R.layout.pause_menu, null);
    helpBuilder.setView(popupView);

    // this is what you need to dismiss
    final AlertDialog helpDialog = helpBuilder.create();
    Button resume = (Button) popupView.findViewById(R.id.resume);

    resume.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            helpDialog.dismiss();
        }
    });

    helpDialog.show();
}

@Override
public void onBackPressed() {
    displayPauseMenu();
}
Другие вопросы по тегам