在实现AsyncTask期间,我在progressDialog中设置了setCancelable(true)。但是当用户点击屏幕或按下' Back'加载时按钮,对话框消失,该活动没有显示数据。我必须再次按“返回”按钮。回到之前的活动。 如果我设置了setCancelable(false),那么用户点击屏幕就没有效果了,然后“返回”#39;按钮也不起作用。我想实现这一点 - 点击屏幕应该没有任何效果,并按下'返回'中间的按钮应该将用户带回以前的活动。当互联网太慢而对话框在屏幕上花费太多时间时,这种情况就会到来。 此外,我尝试在我的JSONParserclass中设置connectiontimeout,并在时间超过10秒时显示对话框,但是当时间超过10秒时没有任何反应。
HttpParams httpParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams, 10000);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParams);
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
StatusLine statusLine = httpResponse.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} else{
Toast.makeText(mContext,"Failed to fetch data",Toast.LENGTH_SHORT).show();
}
答案 0 :(得分:0)
对话框一打开就会获得焦点。您可以通过在对话框的onCancel()回调中调用finish()来将用户带到上一个活动:
dialog.setCancelable(true):
dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
//logic for back key goes here
finish();
}
});