Buenas.
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:
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
}
}
}
A ver si alguien logra decirme el porqué.
Muchas gracias!!