2017-07-25 5 views
0

Ce crash est arrivé récemment via notre système de rapport d'accident. Je ne peux pas reproduire ce crash, et à ce jour nous avons seulement 1 rapport.Comment déboguer AppCompat TextView InflateException?

L'application est une grande demande, avec de nombreuses activités et des fragments, et l'stacktrace ne donne aucune indication de l'endroit où dans l'application de la collision est survenue (La stacktrace entière semble avoir lieu dans Android ou AppCompat cours - aucune mention de mon application de code).

Donc, je n'ai aucun moyen de savoir quel TextView, sur 100s de TextViews, dans mon application est en cause (et non, je ne peux pas poster tous les fichiers XML de mise en page pour l'ensemble de mon application).

Compte tenu de cette information, quelqu'un peut-il offrir des conseils sur la façon de déboguer ce stacktrace?

Fatal Exception: android.view.InflateException: Binary XML file line #43: Binary XML file line #43: Error inflating class TextView 

Caused by android.view.InflateException: Binary XML file line #43: Error inflating class TextView 

Caused by java.lang.UnsupportedOperationException: Failed to resolve attribute at index 4: TypedValue{t=0x2/d=0x1010099 a=1} 
     at android.content.res.TypedArray.getColor(TypedArray.java:476) 
     at android.widget.TextView.<init>(TextView.java:1077) 
     at android.widget.TextView.<init>(TextView.java:990) 
     at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:62) 
     at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:58) 
     at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 
     at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1029) 
     at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1087) 
     at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:776) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:865) 
     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:873) 
     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:873) 
     at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:525) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:427) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:378) 
     at android.widget.Editor$SuggestionsPopupWindow.initContentView(Editor.java:3686) 
     at android.widget.Editor$PinnedPopupWindow.<init>(Editor.java:3384) 
     at android.widget.Editor$SuggestionsPopupWindow.<init>(Editor.java:3669) 
     at android.widget.Editor.replace(Editor.java:423) 
     at android.widget.Editor$3.run(Editor.java:2343) 
     at android.os.Handler.handleCallback(Handler.java:751) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:154) 
     at android.app.ActivityThread.main(ActivityThread.java:6682) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
+0

Pouvez-vous poster 'SuggestionsPopupWindow'? – azizbekian

+0

Pouvez-vous partager votre fichier .xml – Anil

+0

@Anil non, je ne peux pas partager le fichier .xml de l'ensemble de mon application. J'ai mis à jour la question pour essayer de rendre la situation plus claire. – Mark

Répondre

1

Si vous gonflez une vue en service ou avec applicaiton contexte alors attributs thématiques pourraient être unavalable à certains moments

Utilisez context.setTheme(R.style.your_theme); avant de gonfler votre point de vue

Je recevais même Erreur résolue en utilisant ceci.

Plus sur ce ContextThemeWrapper

+0

Merci @Rajnish - c'est un bon conseil. Cependant, les vues ne sont jamais gonflées dans un service ou avec le contexte de l'application. L'application est sur le grand côté - plus de 350 classes, avec> 150k LOC, et> 500 '' '' 's. Le problème n'a pas été trouvé pendant le test, et je n'ai aucune idée de la façon de le répliquer. – Mark

+0

Je vois un autre crash rapporté qui est probablement lié à ceci: Exception fatale: java.lang.IllegalStateException - Vous devez utiliser un thème Theme.AppCompat (ou un descendant) avec cette activité. Malheureusement, la trace de la pile ne me dit pas l'activité qu'elle se produit dans les deux (classe d'activité de base). Mon application a un thème par défaut qui est un descendant de Theme.AppCompat, et toutes les activités que j'ai définies qui utilisent un thème différent utilisent également Theme.AppCompat, à l'exception de quelques activités de tiers (facebook, zendesk) – Mark

+0

Comme pour que je puisse décoder vous définissez textColor (peut être dans la troisième partie lib) par cette ligne à android.content.res.TypedArray.getColor (TypedArray.java : 476), examinez également si vous gonflez une vue de ces bibliothèques. Le peut être de là .. –

-2

Le problème résidait dans le thème Parent du style TextView. Vérifiez id de cette textview

+0

Quel TextView? Si je savais quel TextView, je le vérifierais. Le problème est que la stacktrace ne donne aucune indication sur les résultats de TextView dans le crash. – Mark