Как добавить окно сообщения с кнопкой «ОК»?

Я хочу отобразить окно сообщения с кнопкой ОК. Я использовал следующий код, но он приводит к ошибке компиляции с аргументом:

AlertDialog.Builder dlgAlert  = new AlertDialog.Builder(this);
dlgAlert.setMessage("This is an alert with no consequence");
dlgAlert.setTitle("App Title");
dlgAlert.setPositiveButton("OK", null);
dlgAlert.setCancelable(true);
dlgAlert.create().show();

Как мне отобразить окно сообщения в Android?


person Rajkumar Reddy    schedule 07.06.2011    source источник
comment
Каким-то образом ваш код работал как у меня. Возможно, мои настройки sdk <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15" /> как-то связаны с тем, почему я не получил никаких ошибок компиляции, которые вы предлагаете.   -  person RBT    schedule 21.02.2017


Ответы (4)


Я думаю, что может быть проблема, что вы не добавили прослушиватель кликов для положительной кнопки ОК.

dlgAlert.setPositiveButton("Ok",
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          //dismiss the dialog  
        }
    });
person Paresh Mayani    schedule 07.06.2011

Поскольку в вашей ситуации вы хотите уведомить пользователя только коротким и простым сообщением, Toast будет способствовать лучшему взаимодействию с пользователем.

Toast.makeText(getApplicationContext(), "Data saved", Toast.LENGTH_LONG).show();

Обновление: вместо тоста теперь рекомендуется Snackbar для приложений Material Design.

Если у вас более длинное сообщение, которое вы хотите дать читателю, чтобы прочитать и понять, тогда вам следует использовать DialogFragment. (документация в настоящее время рекомендует заключать AlertDialog во фрагмент, а не называть его напрямую.)

Создайте класс, расширяющий DialogFragment:

public class MyDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setTitle("App Title");
        builder.setMessage("This is an alert with no consequence");
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                // You don't have to do anything here if you just 
                // want it dismissed when clicked
            }
        });

        // Create the AlertDialog object and return it
        return builder.create();
    }
}

Затем вызывайте его, когда он вам понадобится в вашей деятельности:

DialogFragment dialog = new MyDialogFragment();
dialog.show(getSupportFragmentManager(), "MyDialogFragmentTag");

Смотрите также

введите описание изображения здесь

person Suragch    schedule 20.10.2014
comment
Отличная идея о тосте. Мне потребовался импорт: [import android.widget.Toast;] - person AnthonyVO; 24.11.2016

Код компилируется для меня нормально. Возможно, вы забыли добавить импорт:

import android.app.AlertDialog;

В любом случае, у вас есть хорошее руководство здесь.

person FerranB    schedule 07.06.2011

person    schedule
comment
этот диалог не будет отображаться без вызова alertDialog.show (); - person Elad; 21.02.2021