我正在开发一个将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();
}
有什么想法吗?
答案 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();
}