2012-03-07 20 views
6

Bu Android Market'ten crashlog: Ben sorununAndroid UnsupportedOperationException: Renk dönüştüremiyorum: type = 0x2

at com.designfuture.music.ui.dialog.MXMDialog.<init>(MXMDialog.java:73) 

olduğunu görebilirsiniz ne Yani

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 

nereden Bu tam fonksiyon

olduğunu

mHolder = new ViewHolder((ViewGroup) inflater.inflate(R.layout.dialog_mxm, null)); 

: Bu kod çizgi var

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); 
    } 

BuSorunun TextView olduğunu düşünüyorum 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> 

içeriğidir. o textview tarzı nedeniyle bu yüzden bu bir sorun olacağını sanmıyorum Android'den doğrudan gelen bir sorun olamaz.

android: textColor = "@ renkli/orange_mxm" bu benim colors.xml içinde

<color name="orange_mxm">#FFff6500</color> 

Bu Dialog.MXM tarzı

<!-- 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> 

olduğunu Ve bu sanmıyorum bir

nerede problem ... so-standart değil renktir? Bunu Nasıl Çözebilirim?

+0

Stilinizi Dialog.MXM için xml gönderin. – adamp

+0

MinSdkVersionınız nedir? – adamp

+0

Benim minSdkVersion 7 (android 2.1) – StErMi

cevap

11

Dialog.MXM tür tüm cihazlar için kullanılan cihaza (örneğin, bir değerler V14/dizinini kullanarak) ya da desteklediği API seviyesi ile değişir mi? (Theme.DeviceDefault.Dialog dahil)

DeviceDefault tema aile API 14 (Android 4.0 ICS) ilave edilmiş ve eski cihazlarda mevcut olmayacaktır. Bu, bu temanın bulunamayacağı cihazlarda, Dialog.MXM'nin null parent temasına sahip olduğu anlamına gelir. Temalar, tanımlanmış değerlere sahip olmak için bir dizi özellik bekler ve bu durumda temanızın birçoğu eksik olur. Bazı cihazlar bunu diğerlerinden daha incelikle ele alabilir.

bir çözüm cihazı çalıştığı platform sürümü bağlı olarak farklı bir ana devralan ortak bir taban teması tanımlamaktır. Bir örnek:

res/değerler/themes.xml:

[...] 
<!-- Use the legacy dialog theme as a base on older devices --> 
<style name="Dialog.Base" parent="@android:style/Theme.Dialog" /> 

<!-- Dialog.Base varies with platform version --> 
<style name="Dialog.MXM" parent="@style/Dialog.Base"> 
    <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> 
[...] 

res/değerler V11/themes.xml:

[...] 
<!-- Use Holo dialogs as the base on Honeycomb --> 
<style name="Dialog.Base" parent="@android:style/Theme.Holo.Dialog" /> 
[...] 

res/değerler-V14/themes.xml:

[...] 
<!-- Use DeviceDefault dialogs as the base on ICS and newer --> 
<style name="Dialog.Base" parent="@android:style/Theme.DeviceDefault.Dialog" /> 
[...] 
1

Bu hatayı modüllerimden birinde alıyordum.

ana uygulama modülünün colors.xml tanımlanan 'Beyaz' renk için bir renk öğesi vardır: İşte sorun açıklaması bu.Yaptığım hata ben 'beyaz' tekrar öğe rengini tanımladığınız edildi

<TextView 
android:textColor="@color/white" 
.../> 

:

<color name="white">#ffffff</color> 

Ve modülünde düzenleri birinde

, ben beyaz renk bahsediyorum benim modülün color.xml yerine

**<color name="white">@color/white</color>** 

gibi

<color name="white">#ffffff</color>. 
gibi olmalıydı

Bu benim sorunumdu.

sayesinde Rakesh

0

bu özel durum var, ama farklı bir nedenden dolayı. Bir seçiciden çekilebilir bir özellikten referans almaya çalışıyordum. here ve here açıklandığı gibi Lollipop öncesi cihazlarda bilinen bir sorundur.

Herhangi birinin bunu yapması gerekiyorsa (ve geriye dönük uyumluluk sağlayın), bir geçici çözüm temaları değiştirmek, her tema için ayrı bir çizge tanımlamak ve attrs.xml dosyasında çizilebilir özel bir öznitelik oluşturmaktır. Yukarıdaki ilk bağlantıda kabul edilen cevapta bir örnek verilmiştir.

Bu cehennem kadar çirkin, ama daha iyi öneriler varsa, onları "duymaktan" mutluluk duyarım.

+0

hey @ M.Paunov herhangi bir kolay çözüm veya geçici çözüm buldunuz mu? –

+0

Yeni bir şey değil, sadece bu çözümü kullandım: http://stackoverflow.com/a/13471695/1934673 –

İlgili konular