2012-10-27 4 views
6

Ho un'app con oltre 100.000 utenti. Ma su alcuni dispositivi (~ 50) ottengo una strana eccezione. Le tracce dello stack dicono che esiste un drawable non trovato.
Ecco la traccia dello stack:

java.lang.RuntimeException: Unable to start activity ComponentInfo{mindmApp.the.big.bang.theory.quiz/mindmApp.the.big.bang.theory.quiz.GameNormalActivity}: android.view.InflateException: Binary XML file line #237: Error inflating class 
... 
Caused by: android.view.InflateException: Binary XML file line #237: Error inflating class 
at android.view.LayoutInflater.createView(LayoutInflater.java:606) 
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678) 
... 
Caused by: java.lang.reflect.InvocationTargetException 
at java.lang.reflect.Constructor.constructNative(Native Method) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
at android.view.LayoutInflater.createView(LayoutInflater.java:586) 
... 28 more 
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/textviewxml_joker.xml from drawable resource ID #0x7f02003d 
at android.content.res.Resources.loadDrawable(Resources.java:1956) 
at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
at android.view.View.(View.java:2841) 
at android.widget.TextView.(TextView.java:580) 
at android.widget.TextView.(TextView.java:573) 

Non ho idea del motivo per cui non è stato trovato questa disegnabile (si tratta di un file XML).
Il binario file XML linea # 237 è:

<TextView 
        android:id="@+id/textViewSkip" 
        android:layout_width="0px" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="4dp" 
        android:layout_weight="1" 
        android:background="@drawable/textviewxml_joker" 
        android:gravity="center" 
        android:text="@string/tvSkip" 
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:textColor="@color/color_textview" 
        android:textSize="22sp" /> 

E qui è il file textviewxml_joker.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:drawable="@drawable/textview_joker_pressed" 
    android:state_pressed="true"/> 
<item android:drawable="@drawable/textview_joker"/> 
</selector> 

ho nessuno un'idea t osolve questo problema?

I migliori saluti!

+0

Questo file 'textviewxml_joker.xml' esiste nella cartella' drawable'? – user370305

+0

Sì, il file textviewxml_joker.xml è la cartella drawable. – Namenlos

+0

Ciao @Namenlos, sto affrontando un problema simile ... hai avuto fortuna con questo? si prega di condividere. –

risposta

1

Se il file non è in textviewxml_joker.xmldrawable, ma piuttosto in una cartella drawable-*, quindi quei pochi dispositivi che ottengono l'errore non può soddisfare le condizioni per utilizzare la cartella drawable-*.

Inserirlo nel numero drawable e dovrebbe risolvere il problema.

+0

No, il file textviewxml_joker.xml si trova nella normale cartella drawable. – Namenlos

0

Se si dispone di più cartelle di risorse, assicurarsi che Android trovi il proprio xml estraibile per ogni possibile combinazione di qualificatore (Providing Resources). Guardando i tipi di dispositivi che hanno questo errore potrebbe darti un suggerimento su dove cercare.

+2

Il file si trova nella normale cartella drawbable. Tutti i dispositivi devono trovarlo lì o no? – Namenlos

1

Questo potrebbe accadere anche se la risorsa a cui si fa riferimento (chiamiamola ResA) è a sua volta riferita a una risorsa mancante (chiamiamola ResB). Android aumenterà ResourceNotFoundException per ResA anche se ciò che manca è ResB. Così è la vita!

Nel mio caso, ResB è stato definito nei valori-swxxxdp ma non nei valori. Quindi stavo ottenendo questa eccezione sui telefoni ma non sui tablet.