Lorsque vous gonflez une mise en page dans un fragment, avec le layoutinflater, je reçois cette exception:
android.view.InflateException: XML file ./res/layout/locations_list.xml line #-1 (sorry, not yet implemented): Error inflating class com.costum.android.widget.LoadMoreListView at android.view.LayoutInflater.createView(LayoutInflater.java:613) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:396) ... Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_createView(LayoutInflater.java:587) at android.view.LayoutInflater.createView(LayoutInflater.java) at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_createViewFromTag(LayoutInflater.java:687) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java) at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_rInflate(LayoutInflater.java:746) at android.view.LayoutInflater.rInflate(LayoutInflater.java) at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java) at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_inflate(LayoutInflater.java:396) at android.view.LayoutInflater.inflate(LayoutInflater.java) ... Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -9 at java.lang.String.substring(String.java:1911) at org.robolectric.res.ResName.qualifyResName(ResName.java:50) at org.robolectric.res.Attribute.getResourceReference(Attribute.java:138) at org.robolectric.res.Attribute.qualifiedValue(Attribute.java:127) at org.robolectric.res.builder.XmlFileBuilder$XmlResourceParserImpl.qualify(XmlFileBuilder.java:316) at org.robolectric.res.builder.XmlFileBuilder$XmlResourceParserImpl.getAttributeValue(XmlFileBuilder.java:340) at org.robolectric.shadows.ShadowResources.findAttributeValue(ShadowResources.java:252) at org.robolectric.shadows.ShadowResources.attrsToTypedArray(ShadowResources.java:188) at org.robolectric.shadows.ShadowResources.access$000(ShadowResources.java:51) at org.robolectric.shadows.ShadowResources$ShadowTheme.obtainStyledAttributes(ShadowResources.java:460)
4 Réponses :
Je l'ai compris, et si vous avez obtenu des actions à une telle situation, il suffit de rechercher vos identifiants dans le XML, même si
android:id="@android:id/list"
Normalement, je donne un identifiant de ressource comme celui-ci, Android: id = "@ + id / txtviewone". Alors, comment cela devrait être formaté pour surmonter cette question? Je reçois une erreur de compilation, si je passe à Android: id = "Android: id / txtviewone"
Android: id = "@ + id / txtviewone" va bien, le cas ci-dessus est un cas spécifique. The @ + ID / Android: ... préfixe a été utilisé dans les anciennes versions de l'API et n'est pas compatible avec Robolectric.
@Jrhamza: Vous devez ajouter @ similaire à celui-ci: android: id = "@ Android: id / txtviewone" code>
Je ne pensais pas que c'était une solution pour mon problème, mais c'était. Pour sauver les autres quelque temps, vous devez également le faire avec n'importe quelle vue de liste vide que vous pourriez avoir dans la mise en page, par exemple, "@android: id / vide". Si évident dans le recul, mais je n'y pensais même pas.
Dans mon cas, j'ai eu ce problème quand j'avais ceci dans mon application: mais cela dans mon projet unit: p>
Dans mon cas, mon fragmentactivité code> XML gonflait un fragment code> code> qui attendait un
Bundle code>. J'ai échangé le XML pour un support
Framelayout code> et ajouté le fragment avec le faisceau approprié dans l'activité. P>
La dernière version de Robolectric (3.0-Snapshot) a quelques problèmes avec des vues personnalisées. P>
Pour résoudre ce problème, faites le suivant: p>
android.library.reference.1 = .. / .. / Build / Intermediates / Exploded-Aar / com.etsy.android.Grid / Bibliothèque / 1.0.5 P>
Ici, vous devez vérifier trois choses: p>
Vous avez un exemple de projet travaillant ici: https://github.com/jiahaoliuliu/robolectricsample /bloc /Master/app/src/main/project.properties P>
Cela ne concerne pas les vues personnalisées avec des espaces de noms personnalisés définis dans votre application, cependant, n'est-ce pas? Je vois toujours cette question.
poster locations_list.xml
Ajouter le fichier manquant.
Êtes-vous sûr que vous avez une classe com.custom.android.widget .charger plus de listeView? Peut-être qu'il y a une faute de frappe dans "costum"?
Hmm, c'est une faute de frappe mais pas la mienne. C'est l'identifiant de groupe correct et l'exécuter sur Android fonctionne.
Je ne comprends pas, alors ça marche ou pas? Et quel groupe fait-il référence?
Désolé pour le malentendu, com.costum. est le bon paquet, et le problème est donc toujours présent.