有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java文本视图扩展;不支持操作异常

我已经扩展了TextView来实现Checkable。除了{}之外,我没有碰任何{}东西。此外,我刚刚实现了可检查的方法。(为了清晰起见,进行了删节。)

public class CheckableTextView extends TextView implements Checkable {

public CheckableTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected int[] onCreateDrawableState(int extraSpace) {
    final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
    if (isChecked()) {
        mergeDrawableStates(drawableState, CheckedStateSet);
    }
    return drawableState;
}

它在ICS上编译得很好,但在Android2.3中,当程序试图放大这个视图时,我遇到了一个非常奇怪的错误

10-31 00:51:20.414: E/AndroidRuntime(601): FATAL EXCEPTION: main
10-31 00:51:20.414: E/AndroidRuntime(601): 安卓.view.InflateException: Binary XML file line #3: Error inflating class net.blackenvelope.utrechtafval.map.layouts.CheckableTextView

10-31 00:51:20.414: E/AndroidRuntime(601): Caused by: java.lang.reflect.InvocationTargetException
10-31 00:51:20.414: E/AndroidRuntime(601):  at java.lang.reflect.Constructor.constructNative(Native Method)
10-31 00:51:20.414: E/AndroidRuntime(601):  at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
10-31 00:51:20.414: E/AndroidRuntime(601):  at 安卓.view.LayoutInflater.createView(LayoutInflater.java:505)
10-31 00:51:20.414: E/AndroidRuntime(601):  ... 45 more
10-31 00:51:20.414: E/AndroidRuntime(601): Caused by: java.lang.UnsupportedOperationException: Can't convert to dimension: type=0x2
10-31 00:51:20.414: E/AndroidRuntime(601):  at 安卓.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:463)
10-31 00:51:20.414: E/AndroidRuntime(601):  at 安卓.view.View.<init>(View.java:1963)
10-31 00:51:20.414: E/AndroidRuntime(601):  at 安卓.widget.TextView.<init>(TextView.java:344)
10-31 00:51:20.414: E/AndroidRuntime(601):  at 安卓.widget.TextView.<init>(TextView.java:337)
10-31 00:51:20.414: E/AndroidRuntime(601):  at net.app.layouts.CheckableTextView.<init>(CheckableTextView.java:11)
10-31 00:51:20.414: E/AndroidRuntime(601):  ... 48 more

我似乎不知道这个类型=0x2意味着什么

以下是XML:

<?xml version="1.0" encoding="utf-8"?>

<app.CheckableTextView
    xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
    安卓:id="@+id/overlay_type_title"
    安卓:layout_width="match_parent"
    安卓:background="@drawable/overlay_list_bg_selector"
    安卓:layout_height="wrap_content"
    安卓:drawableLeft="@drawable/overlay_list_icon"
    安卓:drawablePadding="10dp"
    安卓:gravity="center_vertical"
    安卓:minHeight="?安卓:attr/listPreferredItemHeightSmall"
    安卓:paddingLeft="10dp"
    安卓:paddingRight="?安卓:attr/listPreferredItemPaddingRight"
    安卓:textAppearance="?安卓:attr/textAppearanceListItemSmall" 
    >
</app.CheckableTextView>

共 (1) 个答案

  1. # 1 楼答案

    ?android:attr/listPreferredItemPaddingLeft?android:attr/listPreferredItemPaddingRight仅在API 14+(ICS和更高版本)中可用。因此,它不是将其解释为API 9-10(2.3)中的维度

    我建议使用你自己的价值观。如果您熟悉资源文件,请添加一个<dimen>属性,该属性的填充值与您在ICS上看到的类似,然后引用该属性

    如果不熟悉自定义XML值,请查看at the ^{} documentation