Loader no se inicia después de llamar a initLoader ()?

Tengo un fragmento, y quiero iniciar un cargador cuando se hace clic en un botón:

public class MyFragment extends Fragment { public void onActivityCreated() { super.onActivityCreated(); Button btn = ...; btn.setOnClickListener(new OnClickListener() { public void onClick(View view) { getLoaderManager().initLoader(500, null, mMyCallback); } }); } private LoaderManager.LoaderCallbacks<String> mMyCallback = new LoaderManager.LoaderCallbacks<String>() { @Override public Loader<String> onCreateLoader(int arg0, Bundle arg1) { Log.e(TAG, "LoaderCallback.onCreateLoader()."); return new MyLoader(getActivity()); } } } public class MyLoader extends AsyncTaskLoader<String> { public MyLoader(Context context) { super(context); } @Override public String loadInBackground() { Log.e(TAG, "Hi, running."); return "terrific."; } } 

Después de hacer clic en el botón, puedo ver el método onCreateLoader de mi devolución de llamada llamado, pero el cargador creado nunca empieza realmente. ¿Necesitamos llamar a forceLoad () en el cargador para que empiece realmente? Ninguno de los puestos de muestra hacer esto,

Gracias

Es necesario implementar onStartLoading() y llamar a forceLoad() en algún lugar del método.

Consulte esta publicación para obtener más información: Implementación de cargadores (parte 3)

En mi experiencia nunca funcionó a menos que use forceLoad() .

Puedes encontrar la respuesta a esta pregunta anterior útil: Cargadores en Android Honeycomb

Tres puntos importantes con respecto a los cargadores son:

  1. Siempre Utilice el método forceLoad() al inicializar los cargadores. Por ejemplo:

     getLoaderManager().initLoader(500, null, mMyCallback).forceLoad(); 
  2. Siempre implemente onStartLoading() . Esta función será automáticamente llamada por LoaderManager cuando se LoaderManager el fragmento / actividad asociada.

  3. Asegúrese de que el ID del cargador es único, de lo contrario no se llamará al nuevo cargador.

Si todavía hay un problema, puede comprobar el estado del cargador llamando al método isStarted() .

onCreateLoader mantener una referencia a la instancia del cargador que cree en el método onCreateLoader . A continuación, para actualizarlo, llame a yourLoader.onContentChanged();

Si tiene más de un cargador en la misma actividad, asegúrese de que su id difiere. Perdí pocas horas para entenderlo 🙂

  • ¿Cuál es la diferencia entre DVM y JVM?
  • Mapa de bits de Android para Imageview
  • Determinar si el contexto es una actividad específica
  • Cómo reemplazar el valor en clave particular en LinkedHashMap
  • No se puede conectar mediante httpconnection en android
  • Mi aplicación recibe un error inesperado y me obliga a cerrarlo ... ¿cuál parece ser el problema?
  • DatePickerDialog incorrectamente imponiendo una fecha mínima de 1 de enero de 1970
  • Aplicación de reconocimiento de voz de Android sin pop-up
  • ¿Cómo mantener la pantalla encendida en Qt para Android?
  • No se puede realizar esta acción después de onSaveInstanceState (onClick preference)
  • Descifrado Java y encriptación compatible con SJCL?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.