Итак, я пытаюсь получить AlertDialog, чтобы подтвердить щелчок по кнопке «удалить из базы данных». Пробовал довольно долго и не мог получить рабочую модель. Мой текущий код выглядит следующим образом.Подтверждение удаления с помощью AlertDialog в Android
В верхней части класса булево
private static boolean dialogResult;
Способ для отображения диалогов
private void showErrorDialog(String title, String message){
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle(title)
.setMessage(message)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Activity.setDialogResult(true);
dialog.dismiss();
}
})
.setNegativeButton(R.string.cancel,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Activity.setDialogResult(false);
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
, где setDialogResult (BOOL) просто устанавливает переменную вышеупомянутого класса.
когда кнопка 'Удалить' нажимается этот код выполняет:
setDialogResult(false);
//Find which list is to be deleted
RadioButton selectedBtn=(RadioButton)findViewById(group.getCheckedRadioButtonId());
String currentSelectedListName=selectedBtn.getText().toString();
if(!currentSelectedListName.equals("All")){//check if the list is the default
showErrorDialog("","Delete: "+currentSelectedListName+" ?");
if(dialogResult){
mDbHelper.deleteFGList(currentSelectedListName);
this.populateRadioGroupFromDb();
}
} else{//if it is the default (That is, the name of the list is "All") tell user of error
showErrorDialog("Delete Error","The default list cannot be deleted");
}
//}
Цените помощь!
Редактировать: извините, забыли упомянуть об ошибке, которую я имел. Когда вы нажмете OK в диалоговом окне предупреждения, он не удалит элемент из базы данных. Как-то он пропускает эту логическую проверку. Вы можете увидеть, что значение boolean для параметра false указано в начале этого фрагмента кода. Если он удален, вы нажимаете кнопку «удалить», кнопку ok в диалоговом окне, а затем ничего не происходит. Если вы снова нажмете кнопку «удалить», этот новый выбор будет удален автоматически без проверки диалога. В основном, те методы onClick испорчены, и я надеялся, что есть лучший способ сделать это. Я читал что-то об использовании интерфейсов?
Так кажется, что люди были предположить, этот подход
if(!currentSelectedListName.equals("All")){//check if the list is the default
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle("")
.setMessage("Delete: "+currentSelectedListName+" ?")
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mDbHelper.deleteFGList(currentSelectedListName);
Activity.populateRadioGroupFromDb();
}
})
.setNegativeButton(R.string.cancel,null);
AlertDialog alert = builder.create();
alert.show();
} else{//if it is the default (That is, the name of the list is "All") tell user of error
showErrorDialog("Delete Error","The default list cannot be deleted");
}
Проблема заключается в том, что затмение дает ошибку компиляции на
mDbHelper.deleteFGList(currentSelectedListName);
Activity.populateRadioGroupFromDb();
1.Cannot относится к неконечной переменной currentSelectedListName внутри внутреннего класса определенный в другом методе 2. Невозможно сделать статическую ссылку на нестатический метод populateRadioGroupFromDb() из типа MyFGCardsActivity
Является ли это защищенным подходом или я не понимаю?
Какая ошибка? –
С какими проблемами вы сталкиваетесь? отображается диалоговое окно? – Chandrashekhar