Как добавить окно сообщения с кнопкой ОК
Я хочу отобразить окно сообщения с кнопкой ОК. Я использовал следующий код, но это приводит к ошибке компиляции с аргументом:
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?
4 ответа
Я думаю, что может быть проблема в том, что вы не добавили прослушиватель кликов для положительной кнопки ОК.
dlgAlert.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//dismiss the dialog
}
});
Поскольку в вашей ситуации вы хотите уведомить пользователя только коротким и простым сообщением, Toast
сделал бы для лучшего пользовательского опыта.
Toast.makeText(getApplicationContext(), "Data saved", Toast.LENGTH_LONG).show();
Если у вас есть более длинное сообщение, которое вы хотите дать читателю время, чтобы прочитать и понять, то вы должны использовать 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");
Смотрите также
Код компилируется нормально для меня. Может быть, вы забыли добавить импорт:
import android.app.AlertDialog;
Во всяком случае, у вас есть хороший учебник здесь.
@Override
protected Dialog onCreateDialog(int id)
{
switch(id)
{
case 0:
{
return new AlertDialog.Builder(this)
.setMessage("text here")
.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface arg0, int arg1)
{
try
{
}//end try
catch(Exception e)
{
Toast.makeText(getBaseContext(), "", Toast.LENGTH_LONG).show();
}//end catch
}//end onClick()
}).create();
}//end case
}//end switch
return null;
}//end onCreateDialog