Я хотел бы отобразить диалоговое окно «ОК» для пользователя, и я хотел бы знать, нажимал ли пользователь «ОК», «Отмена», или он решил просто закрыть диалоговое окно, нажимая в другом месте экрана или нажимая кнопку «Назад».
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
final EditText input = new EditText(MainActivity.this);
builder.setView(input);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
// ok stuff
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
// cancel stuff
}
});
builder.setOnDismissListener(new DialogInterface.OnDismissListener()
{
@Override
public void onDismiss(DialogInterface dialog)
{
//dismiss stuff
}
});
builder.show();
Проблема здесь в том, что всякий раз, когда пользователь нажимает кнопку «ОК», слушатель «отклонить» срабатывает сразу после этого. Есть ли способ не запускать слушателя, если пользователь нажимает кнопку?
Я понимаю, что яМожно использовать логический флаг, но я надеюсь, что на самом деле есть элегантное решение.
Я не ищу решения о том, как предотвратить закрытие диалога.Я ищу решение о том, как предотвратить отключение слушателя при нажатии кнопки ОК и закрытии диалога.