我正在尝试在saveState()调用中进行一些清理。我想弹出一个对话框,如果有
退出活动时出现错误,但是活动到此为止已经消失。
我想通过一个名为StudentEdit的活动来实现这一点,但是上下文应该是什么?
当我使用StudentEdit.this时,对话框弹出,然后消失。 getApplicationContext原因
空指针异常。
private void saveState() {
// some error checking code
// if blah blah
AlertDialog alertDialog = new AlertDialog.Builder(StudentEdit.this).create();
alertDialog.setMessage("error");
alertDialog.setButton(BUTTON_POSITIVE, "Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// do something for yes
} });
alertDialog.setButton(BUTTON_NEGATIVE, "No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel(); // kill dialog
StudentEdit.this.finish(); // kill the activity
}
});
alertDialog.show();
}
最佳答案
这应该为您工作。
@Override
protected void onPause() {
saveState(this)
}
将您的saveState更改为。
private saveState(Context context) {
//AlertDialog alertDialog = new AlertDialog.Builder(context).create();
Toast.maketext(context, "Boom..." Toast.LENGTH_SHORT).show();
}
这应该足够,可能不需要从onSaveInstanceState进行调用。
更新
如果您现在确实需要展示一些东西,我仍然建议您考虑设计。可能是
Toast
可能会执行的操作,因此不建议此时使用警报来阻止UI。