Le chargeur ne démarre pas après avoir appelé initLoader ()?
J'ai un fragment, et que vous voulez commencer un chargeur quand on clique sur un bouton:
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.";
}
}
Après avoir cliqué sur le bouton, je peux voir mon rappel de onCreateLoader méthode appelée, mais les créé chargeur jamais ne commence réellement. Devons-nous appeler forceLoad() sur le chargeur lui-même pour l'obtenir pour commencer? Aucun des échantillons postes ce faire,
Grâce
source d'informationauteur user291701
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour mettre en œuvre
onStartLoading()
et appelforceLoad()
quelque part dans la méthode.Voir ce post pour plus d'informations: de la mise en Œuvre des Chargeurs (partie 3)
Dans mon expérience, il n'a jamais travaillé au moins que j'ai utilisé
forceLoad()
.Vous pouvez trouver la réponse à cette question précédente utile:
Chargeurs en Android Honeycomb
Trois points importants concernant les Chargeurs sont:
Toujours Utiliser
forceLoad()
la méthode alors que l'initialisation des Chargeurs. Par Exemple:Toujours mettre en œuvre
onStartLoading()
. Cette fonction sera automatiquement appelée parLoaderManager
lorsque la fragment ou une activité est en cours de démarrage.Assurez-vous que l'ID du chargeur est unique, autrement, nouveau Chargeur ne sera pas appelé.
Si il y a encore un problème, vous pouvez vérifier l'état du chargeur en appelant le
isStarted()
méthode.Vous avez besoin de garder une référence à l'instance du chargeur que vous créez dans la méthode
onCreateLoader
. Ensuite, pour l'actualiser, appelyourLoader.onContentChanged();
Si vous avez plus de 1 chargeur dans la même activité, assurez-vous de leur carte d'identité diffère. J'ai perdu quelques heures à la figure 🙂