Я хотел бы повторно использовать AlertBuilder и поэтому поместить его создание в собственный метод. Что-то вроде этого:Java: как повторно использовать прослушиватели
private boolean askToDiscardChanges() {
final boolean result = false;
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
result = true;
break;
case DialogInterface.BUTTON_NEGATIVE:
result = false;
break;
}
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(NewShootingActivity.this);
builder.setMessage(getResources().getString(R.string.msgDiscardChanges)).setPositiveButton(getResources().getString(R.string.lblYes), dialogClickListener)
.setNegativeButton(getResources().getString(R.string.lblNo), dialogClickListener).show();
return result;
}
К сожалению, это не работает, но я надеюсь, что это поможет понять мою проблему. Можно ли вернуть результат слушателя? Как?
Thanks
Вы смешиваете синхронный асинхронный код, который не будет работать. Просто передайте слушателя в качестве аргумента в метод 'askToDiscardChanges()'. В качестве альтернативы вы можете реализовать слушателя в классе, который содержит метод 'askToDiscardChanges()'. Здесь вы можете многое сделать. –
Да, действительно. Я приспособил код: askToDiscardChanges (новый DiscardCallbackInterface() { @Override общественного недействительными onUserSelection (логический результат) { , если (результат == TRUE) { NavUtils.navigateUpFromSameTask (NewShootingActivity.this); }} }); – AntonSack