我有以下代码:
public void promptUserToSaveModifications() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getString(R.string.str_desea_guardar_antes_salir))
.setPositiveButton(getString(R.string.msj_si), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
if (valoresGenerales.options.op_timer_oper_edicion_ot == 1 && valoresGenerales.options.Edi_bas_ot_RegistroHoper_boton_ini_ter_trabajo == 0) {
promptUserToFinishCurrentJob();
} else if (btnMnHoraInicioRegistroHoper.getText().toString().equals(getString(R.string.str_edit_correctivo_finalizar_trabajo))){
promptUserToFinishCurrentJob();
} else if (saveModifications()) {
if (!postProcessSave())
finish();
}
}
}).show();
}
private void promptUserToFinishCurrentJob() {
if (existsCurrentJob()) {
exist_inicio_hoper = true;
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(getString(R.string.str_trabajos_iniciados))
.setPositiveButton(getString(R.string.msj_si), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
toggleCurrentJob();
if (saveModifications()) {
if (!postProcessSave())
finish();
}
}
}).show();
}
}
@Override
public void finish() {
Intent i = new Intent();
i.putExtra("index", getIntent().getIntExtra("index", 0));
i.putExtra("top", getIntent().getIntExtra("top", 0));
setResult(RESULT_OK, i);
super.finish();
}
问题是如果它在saveModifications()
方法中通过第二个else if
进入promptUserTosaveModifications()
,它就会完成活动。但是,如果第一个else if
进入promptUserToFinishCurrentJob()
并在此内部进入saveModifications()
,它就不会完成活动...你知道为什么和我怎么能完成它?
谢谢!
答案 0 :(得分:3)
您需要活动上下文才能完成活动。 试试
getApplicationContext().finish();
或
this.finish();
如果您想要使用
片段中的警报对话框完成活动getActivity().finish();
答案 1 :(得分:1)
始终在异步方法中使用YourActivity.this.finish()
。
答案 2 :(得分:1)
您正在使用对话框,即您需要先完成活动才能完成。使用以下内容完成您的活动。
getActivity().finish();