A ver si me podeis echar un cable, porque llevo ya 3 semanas probando mil cosas y no hay manera de dar con la tecla.
Esto que voy a comentar me pasa sólo a veces y no se determinar el motivo.
En un Fragment llamo a una tarea asíncrona. Esta tarea crea un ProgressDialog y cuando finaliza, le hago un dismiss para ocultarla.
Tengo un registro en base de datos que me va almacenando los errores que se van produciendo en la APP. Y registro bastantes errores de este tipo.
El error se produce cuando hago el loading.dismiss();
Código:
java.lang.IllegalArgumentException: View not attached to window manager ************************* TRAZA ************************* android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:425) android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:327) android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:83) android.app.Dialog.dismissDialog(Dialog.java:330) android.app.Dialog.dismiss(Dialog.java:312) com.ligapro.CargarComunidades$TareaAsincrona.onPostExecute(CargarComunidades.java:215) com.ligapro.CargarComunidades$TareaAsincrona.onPostExecute(CargarComunidades.java:1) android.os.AsyncTask.finish(AsyncTask.java:631) android.os.AsyncTask.access$600(AsyncTask.java:177) android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) android.os.Handler.dispatchMessage(Handler.java:99) android.os.Looper.loop(Looper.java:176) android.app.ActivityThread.main(ActivityThread.java:5419) java.lang.reflect.Method.invokeNative(Native Method) java.lang.reflect.Method.invoke(Method.java:525) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) dalvik.system.NativeStart.main(Native Method)
Código:
A ver si alguien logra decirme el porqué. public class TareaAsincrona extends AsyncTask<Object, Void, Boolean> { ProgressDialog loading; @Override protected void onPreExecute() { loading = new ProgressDialog(activity); loading.setProgressStyle(ProgressDialog.STYLE_SPINNER); loading.setMessage(getString(R.string.cargando)); loading.setCancelable(false); loading.show(); } @SuppressWarnings("unchecked") @Override protected Boolean doInBackground(Object... params) { boolean resultado = false; try { JSONObject json = new JSONObject(); json.put("idUsuario", sesion.getIdUsuario()); json.put("usuarioLogueado", sesion.getUsuario()); json.put("contrasena", sesion.getContrasena()); final Type tipoListado = new TypeToken<ArrayList<ComunidadBean>>(){}.getType(); listado = (ArrayList<ComunidadBean>) WSUtils.llamarWS("ComunidadesWS/obtenerListadoComunidades", tipoListado, json); if(listado != null) { resultado = true; } } catch(Exception ex) { resultado = false; } return resultado; } @Override protected void onPostExecute(Boolean resultado) { if (loading != null && loading.isShowing()) loading.dismiss(); if(resultado) { // Código no relevante } else { // Código no relevante } } }
Muchas gracias!!