У меня есть способ удалить что-то из базы данных. Я хочу получить подтверждение пользователя. Для этого я реализую логическую функцию, чтобы получить подтверждение с помощью диалогового окна.Диалоговые кнопки сообщений не делают то, что находится внутри кода?
Ну, моя проблема в том, что неважно, выбираю ли я да или нет, я всегда получаю тот же ложный результат.
(я использовал окончательное логическое [] beacuse в противном случае я получаю сообщение об ошибке)
Это метод:
public boolean alertMessage() { //Confirmation to delete routine
final boolean[] confirmation = {false};
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
// Yes button clicked
confirmation[0] =true;
break;
case DialogInterface.BUTTON_NEGATIVE:
// No button clicked
// do nothing
confirmation[0]=false;
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.sure_delete)
.setPositiveButton(R.string.yes, dialogClickListener)
.setNegativeButton(R.string.no, dialogClickListener).show();
return confirmation[0];
}
И это, как я проверить его в моем удаления кода:
//CONFIRMATION
if(!alertMessage()){
return;
}
Обновление: Попробуйте это с одним предложением ответа, но все тот же:
public boolean alertMessage() { //Confirmation to delete routine
final boolean[] confirmation = {false};
new AlertDialog.Builder(this)
.setTitle(R.string.delete)
.setMessage(R.string.sure_delete)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
confirmation[0]=true;
}
})
.setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
confirmation[0]=false;
}
})
.setIcon(android.R.drawable.ic_dialog_alert)
.show();
return confirmation[0];
}
Я положил окончательные логический [] becuase только с булевым я получаю сообщение об ошибке:
"Variable is accessed from within an inner class, needs to be declared final."
И когда я объявляю его окончательным:
"Can not assign a value to final variable"
Так что я должен превратить его в массив. Я бы хотел, чтобы это был логический метод и не реализовал удаление внутри «да», потому что я хочу его повторно использовать в других методах.
Глупый вопрос, но: почему вы используете массив булевых? – compte14031879
Попробуйте это. Я рекомендую вам использовать метод в соответствии со следующей ссылкой и выполнить удаление внутри реализации положительной кнопки. http://stackoverflow.com/questions/2115758/how-do-i-display-an-alert-dialog-on-android – vidulaJ
@ FrédéricLetellier: Я подозреваю, что это сделано, потому что, если использовать только 'final boolean', тогда onClick будет не сможет изменить значение, тогда как значение внутри массива может быть. –