我正在尝试在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();
}
答案 0 :(得分:0)
我认为你不能通过设计在那里展示UI。如果您有错误,您应该保留该数据并在下次启动时将其显示给用户。
通常,您不能将ApplicationContext用于与UI相关的内容。
答案 1 :(得分:0)
这对你有用。
@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。