我正在尝试在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。

09-08 11:05