walkman w600 w300 trae que llama juegos juego ericsson como java android android-activity android-fragments android-loadermanager

java - w600 - juegos del sony ericsson w300



¿El cargador no se inicia después de llamar a initLoader()? (5)

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, pero el cargador creado nunca se inicia. ¿Necesitamos llamar a forceLoad () en el cargador para que realmente comience? Ninguna de las publicaciones de muestra hace esto,

Gracias


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

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


Si tiene más de 1 cargador en la misma actividad, asegúrese de que su ID sea diferente. Perdí unas horas para averiguarlo :)


Tres puntos importantes con respecto a los cargadores son:

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

    getLoaderManager().initLoader(500, null, mMyCallback).forceLoad();

  2. Siempre implementar onStartLoading() . LoaderManager llamará automáticamente a esta función cuando se LoaderManager el fragmento / actividad asociada.

  3. Asegúrese de que la ID del cargador sea única, de lo contrario no se llamará al nuevo Cargador.

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


onCreateLoader mantener una referencia a la instancia del cargador que crea en el método onCreateLoader . Luego, para actualizarlo, llame a yourLoader.onContentChanged();


onStartLoading() 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)