AppCompatImageView无法强制转换为我的班级

时间:2016-01-15 03:34:00

标签: java android imageview

我的android java代码有问题,希望你能帮我解决这个问题。

我的课程使用ImageView父级......有些像这样:

public abstract class BaseStatus extends ImageView
{
    public BaseStatus(Context context){
        super(context);
    }
}

public class BluetoothStatus extends BaseStatus
{
    public BluetoothStatus(Context context){
        super(context);
    }
}

我希望从XML中获取组件作为ImageView,你知道......

BluetoothStatus btStatus;
btStatus = (BluetoothStatus) findViewById(R.id.bt_status); // ERROR

XML:

<ImageView
        android:layout_width="85dp"
        android:layout_height="wrap_content"
        android:id="@+id/bt_status"
        android:src="@drawable/bluetooth"
        android:layout_alignTop="@+id/button3"
        android:layout_alignEnd="@+id/lb_laser" />

我收到了这条消息:

引起:java.lang.ClassCastException:android.support.v7.widget.AppCompatImageView无法强制转换为net.antiradary.radarhunter.activity.status.BluetoothStatus

为什么我无法将ImageView转换为BluetoothStatus? 谢谢你的答案!

2 个答案:

答案 0 :(得分:0)

这足以做到这一点......

<net.antiradary.radarhunter.activity.status.BluetoothStatus
        android:layout_width="85dp"
        android:layout_height="wrap_content"
        android:id="@+id/iv_bluetooth"
        android:src="@drawable/bluetooth"
        android:layout_alignTop="@+id/button3"
        android:layout_alignEnd="@+id/lb_laser" />

并在我的班级中创建像这样的构造函数

class BluetoothStatus extends ImageView
{
    public BluetoothStatus(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
}

答案 1 :(得分:-1)

我知道我参加聚会迟到了,但是以防万一有人为同样的问题而烦恼,当我尝试在寻呼机适配器图像中添加缩放功能时,这是一种对我有用的解决方案。

信息:这不是确切的答案,但是对于那些面临相同问题的人来说,这可能是一个解决方案。我发布此消息是因为我在stackOverflow的任何地方都没有找到这种解决方法

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:visibility="gone">
  <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <ImageView
            android:id="@+id/head_image"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scaleType="centerCrop"
            android:src="@drawable/head_image" />

    </RelativeLayout>

在上面的代码中,只需将<ImageView替换为<com.yourPackage.TouchImageView

TouchImageView (或其他任何类)是一个自定义类(您需要制作),该类应该扩展 android.support.v7.widget.AppCompatImageView