AsyncTask 对话框未关闭
AsyncTask Dialog Not Dismissed
我正在通过异步任务获取一些数据,但它始终显示在屏幕上,从不关闭或隐藏。为什么?
public class getJson extends AsyncTask<String,Void,String>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(kategori.this);
pDialog.setMessage("Yükleniyor...");
pDialog.setIndeterminate(true);
pDialog.setCancelable(false); // ProgressDialog u iptal edilemez hale getirdik.
pDialog.show();
}
@Override
protected String doInBackground(String... unused) {
String resString = "";
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://*********.com/api.asp?cmd=katdok&ID="+talepKategori);
try {
HttpResponse response = client.execute(get);
HttpEntity entity;
entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line+ "\n");
}
resString = sb.toString();
}
catch (Exception e)
{
e.printStackTrace();
}
return resString;
}
@Override
protected void onPostExecute(String string) {
super.onPostExecute(string);
pDialog.dismiss();
}
}
我正在使用以下方法确保在任务完成后关闭对话框,
private void hideProgress() {
if (pDialog != null) {
if (pDialog.isShowing()) {
pDialog.dismiss();
pDialog = null;
}
}
}
避免获取空值并强行关闭对话框。
试试下面的代码
public class getJson extends AsyncTask<String,Void,String>
{
ProgressDialog progressDialog = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(kategori.this,
getResources().getText(R.string.app_name), getResources()
.getText(R.string.wait_message), true);
}
@Override
protected String doInBackground(String... unused) {
String resString = "";
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://*********.com/api.asp?cmd=katdok&ID="+talepKategori);
try {
HttpResponse response = client.execute(get);
HttpEntity entity;
entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line+ "\n");
}
resString = sb.toString();
}
catch (Exception e)
{
e.printStackTrace();
}
return resString;
}
@Override
protected void onPostExecute(String string) {
super.onPostExecute(string);
if(progressDialog.isShowing())
progressDialog.dismiss();
}
}
我正在通过异步任务获取一些数据,但它始终显示在屏幕上,从不关闭或隐藏。为什么?
public class getJson extends AsyncTask<String,Void,String>
{
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(kategori.this);
pDialog.setMessage("Yükleniyor...");
pDialog.setIndeterminate(true);
pDialog.setCancelable(false); // ProgressDialog u iptal edilemez hale getirdik.
pDialog.show();
}
@Override
protected String doInBackground(String... unused) {
String resString = "";
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://*********.com/api.asp?cmd=katdok&ID="+talepKategori);
try {
HttpResponse response = client.execute(get);
HttpEntity entity;
entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line+ "\n");
}
resString = sb.toString();
}
catch (Exception e)
{
e.printStackTrace();
}
return resString;
}
@Override
protected void onPostExecute(String string) {
super.onPostExecute(string);
pDialog.dismiss();
}
}
我正在使用以下方法确保在任务完成后关闭对话框,
private void hideProgress() {
if (pDialog != null) {
if (pDialog.isShowing()) {
pDialog.dismiss();
pDialog = null;
}
}
}
避免获取空值并强行关闭对话框。
试试下面的代码
public class getJson extends AsyncTask<String,Void,String>
{
ProgressDialog progressDialog = null;
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog = ProgressDialog.show(kategori.this,
getResources().getText(R.string.app_name), getResources()
.getText(R.string.wait_message), true);
}
@Override
protected String doInBackground(String... unused) {
String resString = "";
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet("http://*********.com/api.asp?cmd=katdok&ID="+talepKategori);
try {
HttpResponse response = client.execute(get);
HttpEntity entity;
entity = response.getEntity();
InputStream is = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line+ "\n");
}
resString = sb.toString();
}
catch (Exception e)
{
e.printStackTrace();
}
return resString;
}
@Override
protected void onPostExecute(String string) {
super.onPostExecute(string);
if(progressDialog.isShowing())
progressDialog.dismiss();
}
}