【问题标题】:java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12java.lang.UnsupportedOperationException:无法转换为维度:type=0x12
【发布时间】:2014-02-17 06:49:05
【问题描述】:

所以我的问题很奇怪。我不断收到此错误:

java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12

奇怪的是它只发生在 4.1.2 上。我测试了 4.0.3、4.2.2、4.3 和 4.4。除 4.1.2 外,所有功能都可以正常工作。由于 4.0.3 有效,因此 4.1.2 在技术上也应该如此,所以我无法弄清楚出了什么问题。

这是我的 activity_main.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="true"
tools:context="-removed name-">


<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- FrameLayout to display Fragments -->
    <FrameLayout
        android:id="@+id/frame_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- ListView to display slider menu -->
    <ListView
        android:id="@+id/list_slidermenu"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice"
        android:divider="@color/list_divider"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector"
        android:background="@color/list_background" />
</android.support.v4.widget.DrawerLayout>
</FrameLayout>

这是我的 fragment_layout.xml:

 <RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">

 <Spinner
 android:layout_width="match_parent"
 android:layout_height="48dp"
 android:id="@+id/spinner_convertFrom"
 android:spinnerMode="dialog"
 android:layout_marginLeft="16dp"
 android:layout_marginRight="4dp"
 android:layout_alignRight="@+id/button"
 android:layout_alignTop="@+id/spinner_convertTo" />

<Spinner
android:layout_width="match_parent"
android:layout_height="48dp"
android:id="@+id/spinner_convertTo"
android:spinnerMode="dialog"
android:layout_marginRight="16dp"
android:layout_marginLeft="4dp"
android:layout_alignLeft="@+id/button"
android:layout_marginTop="90dp" />

<EditText
android:layout_width="wrap_content"
android:layout_height="48dp"
android:inputType="numberDecimal|numberSigned"
android:ems="10"
android:id="@+id/editText_convert"
android:gravity="center"
android:imeOptions="actionDone"
android:selectAllOnFocus="true"
android:layout_marginBottom="30dp"
android:layout_above="@+id/button_Convert"
android:layout_centerHorizontal="true" />

<Button
android:layout_width="wrap_content"
android:layout_height="48dp"
android:text="@string/convert_button"
android:id="@+id/button_Convert"
android:clickable="true"
android:gravity="center"
android:layout_marginBottom="40dp"
android:layout_above="@+id/textView_result"
android:layout_centerHorizontal="true"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/convert_from"
android:id="@+id/textView_convertFrom"
android:textSize="14sp"
android:layout_alignLeft="@+id/spinner_convertFrom"
android:layout_marginBottom="8dp"
android:layout_alignTop="@+id/textView_ConvertTo" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/convert_to"
android:id="@+id/textView_ConvertTo"
android:textSize="14sp"
android:layout_alignLeft="@+id/spinner_convertTo"
android:layout_marginTop="74dp" />

<TextView
android:layout_width="wrap_content"
android:layout_height="120dp"
android:text="@string/result_box"
android:id="@+id/textView_result"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:gravity="center"
android:singleLine="false"
android:textIsSelectable="true"
android:background="@drawable/result_border" />

<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/button"
android:layout_centerHorizontal="true" />

</RelativeLayout>

我已经搜索了所有类似的问题,但他们的解决方案对我不起作用。

完整日志:

 java.lang.RuntimeException: Unable to start activity ComponentInfo{-removed name-/-removed name-.MainActivity}: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
        at android.app.ActivityThread.access$600(ActivityThread.java:130)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4745)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x12
        at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:463)
        at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:5616)
        at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1809)
        at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:1721)
        at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:58)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:748)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
        at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:2784)
        at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:2844)
        at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:252)
        at android.app.Activity.setContentView(Activity.java:1867)
        at -removed name-.MainActivity.onCreate(MainActivity.java:41)
        at android.app.Activity.performCreate(Activity.java:5008)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)

整个 logcat 没有发布。剩下的就是:

at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

样式.xml:

<resources xmlns:tools="http://schemas.android.com/tools">

<style name="AppTheme" parent="@android:style/Theme.Holo">
    <item name="android:popupMenuStyle">@style/PopupMenu.Konvertr</item>
    <item name="android:actionBarStyle">@style/ActionBar.Solid.Konvertr</item>
    <item name="android:windowBackground">@color/window_bg</item>
    <item name="android:windowTranslucentNavigation" tools:targetApi="19">true</item>
    <item name="android:dropDownSpinnerStyle">@style/SpinnerAppTheme</item>
</style>

<style name="ActionBar.Solid.Konvertr" parent="@android:style/Widget.Holo.ActionBar.Solid">
    <item name="android:background">@drawable/ab_background_textured_konvertr</item>
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_konvertr</item>
    <item name="android:backgroundSplit">@drawable/ab_background_textured_konvertr</item>
</style>

<style name="ActionBar.Transparent.Konvertr" parent="@android:style/Widget.Holo.ActionBar">
    <item name="android:background">@drawable/ab_transparent_konvertr</item>
</style>

<style name="PopupMenu.Konvertr" parent="@android:style/Widget.Holo.ListPopupWindow">
    <item name="android:popupBackground">@drawable/menu_dropdown_panel_konvertr</item>
</style>

<style name="SpinnerAppTheme" parent="@android:Widget.Holo.Spinner">
    <item name="android:background">@drawable/apptheme_spinner_background_holo_dark</item>
</style>

【问题讨论】:

  • 请发布完整的logcat
  • MainActivity.java:41 中发生了什么?您是否使用任何自定义主题?
  • 这是:setContentView(R.layout.activity_main)。在主帖中添加了styles.xml。
  • 我认为问题出在 AppTheme 中引用的 @style/ 中。尝试将它们全部删除(重置为默认值)并逐个添加,直到发生崩溃。这样你就可以找到属性错误的样式。
  • 你是绝对正确的@DoctororDrive 我还没有确定它是哪一个,但这绝对是样式的问题。太感谢了。你是救生员。

标签: android xml layout


【解决方案1】:

您应该在values-v19 样式中添加android:windowTranslucentNavigation 属性。

旧版本不支持。

【讨论】:

  • 似乎将新 API 从主题中移出为我解决了这个问题。
  • 为什么会出现?它发生在甚至不应该查看此属性的设备上......还有其他类似的情况吗?是否可能是因为生成的 R 值的冲突?
  • 我相信 Android 4.1.1 中有一个错误导致它崩溃。在主题中使用更新的属性时,Android 从来没有遇到过问题。
  • @MichellBak 也许它应该在某些平台上工作,但新的项目主题模板创建了一个名为 AppBaseTheme 的默认主题,并带有注释 Theme customizations available in newer API levels can go in res/values-vXX/styles.xml, while customizations related to backward-compatibility can go here.,这有点指向正确的方式。
  • 同样的问题和解决方案也适用于android:windowTranslucentStatus
【解决方案2】:

虽然有很多属性可能导致此崩溃,但由于很难修复,您可能只想检查 ?android:attr/listPreferredItemPaddingStart(以及所有其他 ~start 和 ~end 属性)。 This question 也表示windowTranslucentStatuswindowTranslucentNavigation 有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多