Android 如何在内部类片段中添加进度对话框
我想在片段中创建progressdialog,但一直显示错误是原来添加到这里的窗口com.android.internal.policy.impl.phonewindow泄漏。请帮忙,这是我的代码Android 如何在内部类片段中添加进度对话框,android,android-asynctask,progressdialog,Android,Android Asynctask,Progressdialog,我想在片段中创建progressdialog,但一直显示错误是原来添加到这里的窗口com.android.internal.policy.impl.phonewindow泄漏。请帮忙,这是我的代码 private class ListDaftarHargaAsync extends AsyncTask<String, Void, String> { @Override protected void onPreExecute() { progress
private class ListDaftarHargaAsync extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("retrieving...");
progressDialog.setIndeterminate(false);
progressDialog.setCancelable(false);
}
@Override
protected String doInBackground(String... params) {
try {
modelPost.setDataVouchers();
} catch (JSONException e) {
e.printStackTrace();
}
String result = modelPost.resultString;
if (result.length() != 0) {
progressDialog.dismiss();
}
return null;
}
@Override
protected void onPostExecute(String result) {
progressDialog.dismiss();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
fillDaftarHarga();
}
});
}
}
私有类ListDaftarChargaAsync扩展异步任务{
@凌驾
受保护的void onPreExecute(){
progressDialog=新建progressDialog(getActivity());
progressDialog.setMessage(“正在检索…”);
progressDialog.setUndeterminate(false);
progressDialog.setCancelable(假);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
modelPost.setDataCredentials();
}捕获(JSONException e){
e、 printStackTrace();
}
字符串结果=modelPost.resultString;
如果(result.length()!=0){
progressDialog.disclose();
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
progressDialog.disclose();
getActivity().runOnUiThread(新的Runnable()){
@凌驾
公开募捐{
fillDaftarHarga();
}
});
}
}
上面显示的错误是因为您正在调用
progressDialog.disease()代码>打开doInBackground
检查是否显示进度对话框
你不能在doInBackground中触摸UI线程
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("retrieving...");
progressDialog.setIndeterminate(false);
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected String doInBackground(String... params) {
try {
modelPost.setDataVouchers();
} catch (JSONException e) {
e.printStackTrace();
}
String result = modelPost.resultString;
return null;
}
@Override
protected void onPostExecute(String result) {
if (null != progressDialog && progressDialog.isShowing()) {
progressDialog.dismiss();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
fillDaftarHarga();
}
});
}
}
progressDialog.show()在哪里?和post完全错误。并删除progressDialog.Disclose();来自doInBackground。它位于OnPostExceetMove中,移动progressDialog.disease()代码>在DoinBackground中我已经尝试过了,但仍然显示相同的errorprogressDialog=new ProgressDialog(CLASS_NAME.this)//尝试this@Ashadi您尝试的内容(您从DoinBackground中删除dissmiss)
@Override
protected void onPreExecute() {
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("retrieving...");
progressDialog.setIndeterminate(false);
progressDialog.setCancelable(false);
progressDialog.show();
}
@Override
protected String doInBackground(String... params) {
try {
modelPost.setDataVouchers();
} catch (JSONException e) {
e.printStackTrace();
}
String result = modelPost.resultString;
return null;
}
@Override
protected void onPostExecute(String result) {
if (null != progressDialog && progressDialog.isShowing()) {
progressDialog.dismiss();
}
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
fillDaftarHarga();
}
});
}
}