按下后退按钮时的完成活动(警报对话框)

时间:2013-02-21 12:18:09

标签: android alertdialog

我正在开发一个将json解析为listview(背景)的app。我正在尝试处理数据不可用于填充列表视图时的错误。

我已在onPostExecute方法中通过创建警报对话框来处理此问题,如下面的代码所示

    protected void onPostExecute(String args) {
            progressDialog.dismiss();

            //Shows alert dialog if data is unavailable

            if(args != null && args.equals(noData)){
                 AlertDialog.Builder builder = new AlertDialog.Builder(JsonActivity.this);
                 builder.setTitle("Title");
                 builder.setMessage(noData);
                 AlertDialog alert = builder.create();
                 alert.show();

            }


        }

这样可以正常工作,但如果单击后退按钮,则会返回到未填充的空白列表视图。

如果在显示警告对话框时按下后退按钮,我想完成活动。

我也尝试重写onBackPressed方法,但它没有用。

        @Override
    public void onBackPressed() {
        JsonActivity.this.finish();
    }

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

...
builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
    @Override
    public void onCancel(DialogInterface dialog) {
        // if from activity
        finish();
        // if activity is a field
        //activity.finish();
    }

});
如果在显示对话框时取消对话框,则会触发

onCancel

或使用一个OnDismissListener,无论你按下某个按钮还是后退按钮,每当Dialog被解除时都会被调用

...
AlertDialog alert = builder.create();
alert.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(DialogInterface dialog) {
        finish();
    }
});
alert.show();

如果没有数据而不是拨号,显示Toast通常是更好的做法。

        if(args != null && args.equals(noData)){
             Toast.makeText(context, noData, Toast.LENGTH_LONG).show();
             finish();
        }