Я пытаюсь реализовать класс, который использует AlertDialog для отображения диалогового окна подтверждения (например, «Вы уверены, что хотите это сделать?»).
Когда я звоню в первый раз, все работает как положено. Но если я попытаюсь вызвать его позже, он вылетит с ошибкой W/InputEventReceiver: Attempted to finish an input event but the input event receiver has already been disposed.
Я могу создавать отдельные AlertDialogs каждый раз, когда мне нужно использовать окно подтверждения, но это кажется нелогичным. После некоторых поисков (уже 2 дня) я не смог найти рабочего решения. Рассматриваемый класс:
public class ConfirmDialog {
private boolean resultValue;
private boolean result;
private String title;
private String message;
private Context context;
public ConfirmDialog(Context nContext, String nTitle, String nMessage) {
context = nContext;
title = nTitle;
message = nMessage;
}
public boolean getResult()
{
final Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message msg) {
throw new RuntimeException();
}
});
AlertDialog.Builder alert = new AlertDialog.Builder(context);
alert.setTitle(title);
alert.setMessage(message);
alert.setPositiveButton("Yes", new
DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
resultValue = true;
handler.sendMessage(handler.obtainMessage());
}
});
alert.setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
resultValue = false;
handler.sendMessage(handler.obtainMessage());
}
});
alert.show();
try{ Looper.loop();}
catch(RuntimeException e){}
return resultValue;
}
}
Вызов класса:
ConfirmDialog dialog = new ConfirmDialog(MainMenu.this, "Upload Batch", "Are you sure you want to upload this batch?");
if (dialog.getResult() == false){
return false;
}
else {
//do something
}
Я унаследовал этот проект и не создавал этот класс. Я также не думаю, что мне вообще нужно его использовать, но если я смогу заставить его работать, это немного упростит работу.
Любые идеи?
Спасибо!
Я предположил, что каждый раз, когда вам предлагается диалоговое окно подтверждения, можно считать новое действие.




вы начинаете другую деятельность или что-то в этом роде?