Android不支持操作异常:Can';t转换为颜色:类型=0x2
这是安卓市场的crashlog:Android不支持操作异常:Can';t转换为颜色:类型=0x2,android,exception,android-layout,Android,Exception,Android Layout,这是安卓市场的crashlog: 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(Pho
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
这是完整的函数
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);
}
这是R.layout.dialog\u 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>
我认为问题出在文本视图中。
文本视图的风格不会有问题,因为它直接来自Android,所以我认为这不会有问题
android:textColor=“@color/orange_mxm”是在my colors.xml中的吗
<color name="orange_mxm">#FFff6500</color>
#FFff6500
这是Dialog.MXM样式
<!-- 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>
包装内容
@android:彩色/透明
@style/Dialog.MXM.FadeAnimation
真的
真的
居中
@安卓:动画/淡入
@安卓:动画/淡出
我不认为这是一种非常不标准的颜色
问题出在哪里?如何解决此问题?Dialog.MXM样式是否随设备支持的API级别而变化(例如,使用values-v14/目录),还是用于所有设备 DeviceDefault主题系列(包括theme.DeviceDefault.Dialog)是在API 14(Android 4.0,ICS)中添加的,不会出现在旧设备上。这意味着在那些找不到该主题的设备上,Dialog.MXM实际上有一个空的父主题。主题期望许多属性具有定义的值,在这种情况下,您的主题将缺少许多必需的值。一些设备可能会比其他设备更优雅地处理此问题 一种解决方案是定义一个公共基本主题,该主题根据设备运行的平台版本从不同的父级继承。例如: res/values/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>
[...]
[...]
<!-- Use Holo dialogs as the base on Honeycomb -->
<style name="Dialog.Base" parent="@android:style/Theme.Holo.Dialog" />
[...]
[...]
<!-- Use DeviceDefault dialogs as the base on ICS and newer -->
<style name="Dialog.Base" parent="@android:style/Theme.DeviceDefault.Dialog" />
[...]
[…]
@android:彩色/透明
@style/Dialog.MXM.FadeAnimation
真的
真的
居中
[...]
res/values-v11/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>
[...]
[...]
<!-- Use Holo dialogs as the base on Honeycomb -->
<style name="Dialog.Base" parent="@android:style/Theme.Holo.Dialog" />
[...]
[...]
<!-- Use DeviceDefault dialogs as the base on ICS and newer -->
<style name="Dialog.Base" parent="@android:style/Theme.DeviceDefault.Dialog" />
[...]
[…]
[...]
res/values-v14/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>
[...]
[...]
<!-- Use Holo dialogs as the base on Honeycomb -->
<style name="Dialog.Base" parent="@android:style/Theme.Holo.Dialog" />
[...]
[...]
<!-- Use DeviceDefault dialogs as the base on ICS and newer -->
<style name="Dialog.Base" parent="@android:style/Theme.DeviceDefault.Dialog" />
[...]
[…]
[...]
我在一个模块中遇到此错误。以下是问题描述:
主应用程序模块的colors.xml中定义了“白色”的颜色项
<color name="white">#ffffff</color>
#ffffff
在我模块中的一个布局中,我将白色称为:
<TextView
android:textColor="@color/white"
.../>
我犯的错误是,我在模块的color.xml中将项目颜色“white”再次定义为
**<color name="white">@color/white</color>**
***颜色/白色**
相反,它应该是这样的
<color name="white">#ffffff</color>.
#ffffff。
那是我的问题
谢谢,
拉凯什我得到了这个例外,但原因不同。我试图从选择器drawable引用自定义属性。如前所述,这是一个关于棒棒糖前设备的已知问题 如果有人需要这样做(并保持向后兼容性),一个解决方法是切换主题,为每个主题定义一个单独的drawable,并在attrs.xml中为drawable创建一个自定义属性。 上面第一个链接中的接受答案给出了一个示例
这很难看,但如果有人有更好的建议,我很乐意“听到”他们。为Dialog.MXM发布你的风格xml。我的minSdkVersion是7(android 2.1)嘿@M.Paunov你找到了任何简单的解决方案或解决方法吗?没有什么新的,我只是使用了这个解决方案: