Android UnsupportedOperationException: impossible de convertir de couleur: type=0x2
C'est la fermeture inopinée de l'Android Market:
android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:596)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:644)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
at com.designfuture.music.ui.dialog.MXMDialog.<init>(MXMDialog.java:73)
at com.designfuture.music.ui.dialog.MXMDialog.<init>(MXMDialog.java:58)
at com.designfuture.music.model.MXMStoreBuy.getBuyDialog(MXMStoreBuy.java:70)
at com.designfuture.music.ui.fragment.plbl.XLBLFragment$ViewHolder$3.onClick(XLBLFragment.java:290)
at android.view.View.performClick(View.java:3110)
at android.view.View$PerformClick.run(View.java:11934)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4123)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:416)
at android.view.LayoutInflater.createView(LayoutInflater.java:576)
... 22 more
Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
at android.content.res.TypedArray.getColor(TypedArray.java:326)
at android.widget.TextView.<init>(TextView.java:422)
at android.widget.TextView.<init>(TextView.java:364)
... 25 more
Donc, pour ce que je peux voir que le problème est dans
at com.designfuture.music.ui.dialog.MXMDialog.<init>(MXMDialog.java:73)
Où j'ai cette ligne de code:
mHolder = new ViewHolder((ViewGroup) inflater.inflate(R.layout.dialog_mxm, null));
C'est la fonction complète
public MXMDialog(Context context, String title) {
super( context, R.style.Dialog_MXM );
//getWindow()
LayoutParams lp= getWindow().getAttributes();
lp.gravity = Gravity.CENTER;
lp.dimAmount = 0.5f;
lp.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL;
if(inflater == null)
inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mHolder = new ViewHolder((ViewGroup) inflater.inflate(R.layout.dialog_mxm, null));
super.setContentView(mHolder.root);
if(title != null)
setTitle(title);
}
C'est le contenu de la R. layout.dialog_mxm
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@android:id/title"
android:background="@drawable/tabwidget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:gravity="left"
android:paddingLeft="10dp"
android:textStyle="bold"
android:textColor="@color/orange_mxm"
style="@android:style/TextAppearance.Large"/>
<FrameLayout
android:id="@android:id/content"
android:background="@drawable/tabwidget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Je pense que le problème est dans le TextView.
Le style de cette textview ne peut pas être un problème parce que vient directement à partir d'Android donc je ne pense pas que ce sera un problème.
Android:textColor="@couleur/orange_mxm" est-ce dans mon colors.xml
<color name="orange_mxm">#FFff6500</color>
C'est le Dialogue.MXM style
<!-- DIALOG -->
<style name="Dialog.MXM" parent="@android:style/Theme.DeviceDefault.Dialog">
<item name="android:layout_width">wrap_content</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowAnimationStyle">@style/Dialog.MXM.FadeAnimation</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:gravity">center</item>
</style>
<style name="Dialog.MXM.FadeAnimation">
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
Et je ne pense pas que c'est un non-standard de couleur...
Où est le problème? Comment puis-je résoudre ce problème?
- Postez votre style xml pour boîte de Dialogue.MXM.
- Quel est votre minSdkVersion?
- Mon minSdkVersion est de 7 (android 2.1)
Vous devez vous connecter pour publier un commentaire.
La boîte de Dialogue.MXM le style varient avec le niveau de l'API pris en charge par le périphérique (par exemple, en utilisant les valeurs v14/répertoire) ou est-il utilisé pour tous les appareils?
La DeviceDefault thème de la famille (y compris le Thème.DeviceDefault.Boîte de dialogue) a été ajouté dans l'API 14 Android 4.0 (ICS) et ne seront pas présents sur des appareils plus anciens. Cela signifie que sur les appareils dont le thème ne peut pas être trouvé, la boîte de Dialogue.MXM, en effet, a une valeur null thème parent. Les thèmes s'attendre à un certain nombre d'attributs ont des valeurs définies, et dans ce cas, votre thème sera absent beaucoup d'requises. Certains appareils peut traiter cela avec plus de grâce que les autres.
Une solution consiste à définir un socle commun thème qui hérite d'un autre parent basé sur la plate-forme de la version de l'appareil est en cours d'exécution. Un exemple:
res/values/themes.xml:
res/values-v11/themes.xml:
res/values-v14/themes.xml:
J'ai été faire cette erreur dans un de mes modules. Voici la description du problème :
il y a un élément de couleur pour les "blancs" de la couleur définie dans colors.xml de l'application principale du module.
Et dans l'une des mises en page dans mon module, je fais référence à la couleur blanche comme :
L'erreur que j'ai fait a été je l'ai défini la couleur de l'élément "blanc" de nouveau dans mon module color.xml comme
Au lieu de cela, Il doit avoir été comme
C'était mon problème.
Grâce,
Rakesh
J'ai eu cette exception, mais pour une raison différente. J'ai essayé de faire référence à un attribut personnalisé à partir d'un sélecteur de drawable. C'est un problème connu sur les pré-Sucette appareils comme expliqué ici et ici.
Au cas où quelqu'un doit le faire (et de garder une compatibilité ascendante), une solution de contournement est de changer de thème, de définir un distinct drawable pour chaque thème et de créer un attribut personnalisé pour le drawable dans attrs.xml.
Un exemple en est donné dans l'acceptation de réponse dans le premier lien ci-dessus.
Il est laid comme l'enfer, mais si quelqu'un a de meilleures suggestions, je serais heureux d'entendre "les mots".