getLoaderManager().initLoader() n'accepte pas le " il " comme argument de la classe (ListFragment) met en œuvre LoaderManager.LoaderCallbacks<Curseur>
J'ai de la difficulté à la suite d'une guide sur l'utilisation de SQLite sous Android. Je suis à l'aide d'un ListFragment
au lieu d'un ListActivity
(comme dans l'exemple), j'ai donc le ListFragment
mettre en œuvre LoaderManager.LoaderCallbacks<Cursor>
à la place. Puis, dans la fillData()
méthode dans le ListFragment
:
private void fillData() {
// Fields from the database (projection)
// Must include the _id column for the adapter to work
String[] from = new String[] { NotesSQLiteHelper.COLUMN_TITLE };
// Fields on the UI to which we map
int[] to = new int[] { R.id.label };
getLoaderManager().initLoader(0, null, this); //error
adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.notes_row, null, from, to, 0);
setListAdapter(adapter);
}
J'obtiens l'erreur:
The method initLoader(int, Bundle, LoaderManager.LoaderCallbacks<D>) in the type LoaderManager is not applicable for the arguments (int, null, NotesActivity.ArrayListFragment)
sur la ligne marquée, même si this
implémente LoaderManager.LoaderCallbacks<Cursor>
.
Merci pour toutes les idées.
- collez votre code.
- pastebin.com/284e26tT
filldata()
est à la fin du fichier. J'ai changé le nom du package. J'ai aussi devrait probablement avoir mentionné que je suis en utilisant ActionBarSherlock.
Vous devez vous connecter pour publier un commentaire.
Vous n'utilisez pas le droit implémentations de
CursorLoader
etLoader
.Supprimer votre ancien importations et d'utiliser ceux-ci:
Mais j'ai le même Problème à l'aide de SherlockActionBar:
Comme je l'ai étendre
SherlockListActivity
il n'existe PAS de méthodegetSupportLoadManager()
.Toutes les idées sur ce point?
EDIT: suivez ce tutoriel si vous ne savez pas comment utiliser des fragments. Créer une nouvelle Classe s'étend SherlockFragment et déplacer votre écran logique. Faire de votre ancienne activité étendre SherlockFragmentActivity et de montrer le nouvellement créé SherlockFragment. De cette façon, je l'ai eu de travail. Grâce à @JakeWharton!
SherlockListActivity
s'étendListActivity
. Soutenir les fragments et les chargeurs sont une partie de la bibliothèque de prise en charge qui signifie que vous avez besoin de prolongerFragmentActivity
(ouSherlockFragmentActivity
).ListActivity
fournit seulement un ou deux assistants autour de l'utilisationListView
. Vous pouvez utiliser une normaleSherlockFragmentActivity
et il suffit de créer unListView
vous-même.setContentView(android.R.layout.list_content)
et vous comme par magie, ont la même chose!list_content
ne peut pas être résolu. Cible de la version 16, min la version 8.ListView
moi-même comme vous l'avez suggéré ci-dessus, mais maintenant, je suis absent fonction deandroid:id/empty
. Comment résoudre ce problème? MERCI.Quelques choses à surveiller (à partir de mon expérience récente aux prises avec ce):
Si votre minSDK est inférieur à 11 (c'est à dire le niveau 10 pour le pain d'épices) et que vous utilisez le Pack de Support pour la compatibilité ascendante, assurez-vous d'utiliser
Vous avez mentionné cela, quand vous avez dit que vous utilisez ListFragment, mais il est bon de le répéter: Ne pas étendre l'Activité, sinon le paquet de soutien ne fonctionnera pas. Au lieu de cela, étendre le FragmentActivity de la classe ou de l'ListFragment classe.
Pour vos importations, assurez-vous que vous utilisez les versions correctes si votre minSDK < 11:
Espère que cela vous aide... ou au moins quelqu'un d'autre...
Casting de la troisième argument résolu le problème dans mon cas:
de
à
Remarque:
(android.support.v4.app.LoaderManager.LoaderCallbacks<Cursor>) this)
n'a pas fonctionné.
getSupportLoaderManager() or getSupportLoadManager()
n'a pas fonctionné.
Il est tard, mais peut-être aider quelqu'un.
si vous utilisez le chargeur de maneger dans un fragment min api est ci-dessous en NID d'abeille
vous devrait utiliser cette importations
et pour lancer le chargeur de l'utilisation de ce code
espère que cela aide quelqu'un.
Changer votre importations de
et l'utilisation
Mon erreur a été dans la mesure où ceci:
Dans mon cas, j'ai eu mon Activité étendre ActionBarActivity à partir de l'android.de soutien.v7.package de l'application. J'étais alors en mesure d'utiliser
getSupportLoaderManager().initLoader(0, null, this);
Je suis en utilisant ActionBarSherlock avec mon application et j'ai ainsi été en cours d'exécution dans cette question et a travaillé à travers toutes les étapes abordées par d'autres dans cette question. Cependant, je continue à avoir le même problème après avoir essayé toutes les solutions possibles.
Le problème était que j'étais tombée en attendant l'Éclipse de me dire où me manquait quelque chose et il me disait ça, mais pas dans la façon dont j'ai été utilisé pour. Généralement Eclipse dans d'autres cas, dites-moi que je suis absent le remplace faire quelque chose, mais il n'est pas directement en disant qu'ici. J'ai enfin récupéré sur la "LoaderManager.LoaderCallbacks" être le problème et réalisé que je n'avais pas de rappels pour elle donc cette erreur est en fait un très valide erreur. L'ajout de la base remplace résolu mon problème et m'a permis d'aller de l'avant.
J'ai eu un problème similaire où mon AsyncTaskLoader n'était pas de retour de ma Liste, mais ma résolution était de modifier l'appel de .initLoader pour .restartLoader.
J'ai donc fait jamais appelé .initLoader et immédiatement appelé .restartLoader.
J'ai eu un onListItemClick auditeur dans mon fragment et à chaque fois soutenu du fragment et de recharger les onListItemClick et à naviguer à travers l'application qu'il a gardé de s'écraser.
C'est peut-être spécifique à mon application mais j'espère que cela aide les autres personnes si elles ont fragment backstack recharger questions.
Cela faisait partie d'un gestionnaire de fichiers partie de mon application si elle est spécifique en cliquant sur plusieurs onListItemClicks dans le fragment que vous chargez.
J'ai eu contourner ce problème en utilisant un SherlockListFragment (ou vous pouvez utiliser ListFragment, je suppose), mais il a de contenu au sein d'une Activité. J'ai d'abord créé un générique FragmentHolderActivity classe qui ressemble à ceci:
FragmentHolderActivity.java
Ensuite, vous devez créer un fichier XML pour votre fragment.
your_list_fragment.xml
Et voici le code que vous utilisez pour démarrer le fragment:
Vous venez de dire à l'FragmentHolderActivity d'utiliser le your_list_fragment mise en page, qui à son tour en charge de la YourListFragment.java
Vous pouvez ensuite utiliser:
getSherlockActivity().getSupportLoaderManager().initLoader(...)
dans YourListFragment.javaNe sais pas si c'est le corriger approche, mais il garde toute ma logique en Fragments, ce qui est agréable.
A couru dans le même problème. Mon minSdkVersion est de 14, donc ne peut pas utiliser android.de soutien.v4 paquet.
J'ai pensé qu'il en étendant LoaderCallbacks, au lieu de LoaderManager.LoaderCallbacks et l'utilisation de ces paquets
Si vous avez essayé toutes les méthodes ci-dessus, et toujours face à la même erreur avec le "ce" paramètre, puis suivez ces étapes :
Aller dans les paramètres et activer les importations à la volée option.(par défaut, il va
être activé et vous pouvez le faire en utilisant la touche Alt+la touche Entrée).
Couper l'ensemble du code et de l'activité qui avait mis en œuvre
LoaderCallback... et de le coller dans un éditeur de texte.
Alors finalement, copiez le code entier de l'activité de l'éditeur de texte
où vous a collé, sans importer des commandes.( Seul le code de
la classe/de l'activité).
Vous aurez beaucoup d'erreurs que vous avez importé rien encore.
Appuyez sur Alt+Entrée où vous obtenez les erreurs et c'est
les bibliothèques seront importés automatiquement.
Remarque : Choisissez android.app... de la bibliothèque pour CursorLoaders.
Essayer ces 2 lignes, il va travailler
Je suis en utilisant minSDK 27 et ont eu ce même problème, j'ai essayé de le jeter comme @Dexter, mais qui a donné un message d'erreur indiquant que
cannot be cast to android.app.LoaderManager$LoaderCallbacks
, j'ai donc essayé d'utiliser différentes déclarations d'importation et cela a fonctionné. J'ai commenté lav4
versions et c'est ce que j'ai maintenant et l'application fonctionne:Pas tout à fait sûr quand/comment les
v4
versions ont été importés.0
Après un long sacrifice que j'ai obtenu cette solution si vous êtes à l'aide de fragments suffit d'utiliser ce code.
getActivity().getSupportLoaderManager().initLoader(1, null, YourActivity.this);
j'espère que cela est utile pour vous