J'ai deux chargeurs personnalisés hérités de AsyncTaskLoader
que je voudrais utiliser dans mon activité. Chacun d'entre eux renvoie un résultat de type différent. Pour utiliser mon activité pour un rappel que je dois mettre en œuvre deux interfaces:Plusieurs chargeurs dans la même activité
implements LoaderCallbacks<GetSyncListDataResult>, LoaderCallbacks<ErrorResult>
Cependant, en essayant de mettre en œuvre des méthodes requises dans la même classe que je retrouve avec erreur de méthode double et d'effacement (???) Erreur:
// Methods for the first loader
public Loader<GetSyncListDataResult> onCreateLoader(int ID, Bundle bundle) ...
public void onLoaderReset(Loader<GetSyncListDataResult> loader) ...
public void onLoadFinished(Loader<GetSyncListDataResult> loader, GetSyncListDataResult result) ...
// Methods for the second loader
public Loader<ErrorResult> onCreateLoader(int ID, Bundle bundle) ...
public void onLoaderReset(Loader<ErrorResult> loader) ...
public void onLoadFinished(Loader<ErrorResult> loader, ErrorResult result) ...
De toute évidence, les méthodes sont incompatibles et j'ai besoin d'un moyen facile de résoudre ce problème. Quelle serait la bonne façon de résoudre cela?
Ne pas mettre en œuvre les chargeurs. Vous ne pouvez implémenter qu'un seul chargeur. Au lieu de cela, vous devez déclarer vos LoaderCallbacks en tant que variables. LoaderCallbacks syncListCallbacks = nouveau LoaderCallbacks () {... méthodes ici}; –
dymmeh
OK, donc il serait préférable d'avoir une instance de classe anonyme interne dans la variable? – Dusan
Oui. Puis démarrez votre chargeur en tant que getLoaderManager(). InitLoader (loaderId, bundle, syncListCallbacks); – dymmeh