1

我正在开发一个将一些 json 解析为列表视图(背景)的应用程序。当数据无法填充列表视图时,我目前正在尝试处理错误。

我已经在 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();
    }

有什么想法吗?

4

1 回答 1

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();
        }
于 2013-02-21T12:24:54.733 回答