Спасибо за предложения. ICloseActivity
, к сожалению, у меня не сработало. Я решил проблему завершения действия и закрытия диалогового окна следующим образом:
Я изменил метод CreateAlertDialog()
следующим образом и создал вспомогательную функцию exitActivity()
:
public void CreateAlertDialog(String title, String errorMessage, int alertType){
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(title)
.setIcon(R.drawable.alert_icon)
.setMessage(errorMessage)
.setCancelable(false)
.setPositiveButton("Dismiss", new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dismiss = true;
exitActivity();
}
});
AlertDialog alert = builder.create();
alert.setOwnerActivity((Activity)mContext);
alert.show();
}
public void exitActivity() {
this.getOwnerActivity().finish();
}
При вызове этой утилиты я просто устанавливаю прослушиватель dismiss и завершаю действие, если оно отменено.
dialog = new AlertDialogUtils(MyActivity.this);
dialog.setOwnerActivity(MyActivity.this);
dialog.CreateAlertDialog(getString(R.string.no_data),
getString(R.string.empty_table_message), R.id.list_view_alertType);
dialog.setOnDismissListener(new DialogInterface.OnDismissListener(){
@Override
public void onDismiss(DialogInterface arg0) {
finish();
}
});
Таким образом, я могу справиться с закрытием текущей активности, если это необходимо.
Кроме того, для действий, которые я не хотел закрывать вместо вызова exitActivity()
, я позвонил dialog.cancel()
:
.setPositiveButton("Dismiss", new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
cancel();
}
});