繁体   English   中英

android-将ToggleButton转换为子类

[英]android - cast ToggleButton to subclass

我可能会误解类型转换,但这是我的问题。

我有一个带有ToggleButton的Android视图:

<LinearLayout
    ... >
    <ToggleButton
        android:id="@+id/btnRec"
        android:layout_width="125dp"
        android:layout_height="wrap_content"
        android:textOff="Start TEST"
        android:textOn="Stop TEST" />
    ...
</LinearLayout>

然后在我的活动中,声明一个ToggleButton变量:

private ToggleButton mRecordButton = null;

现在,我实现了ToggleButton的子类,称为RecordButton:

class RecordButton extends ToggleButton {

    OnCheckedChangeListener clicker = new OnCheckedChangeListener() {
        ...
    };

    public RecordButton(Context ctx) {
        super(ctx);
        setOnCheckedChangeListener(clicker);
    }
}

最后在onCreate我通过其ID找到了按钮:

mRecordButton = (RecordButton) findViewById(R.id.btnRec);

这将引发ClassCastException

为什么? 如何将其从ToggleButton (超类)转换为RecordButton (子类)?

在您的XML中,用自定义ToogleButton替换常规的ToogleButton

<LinearLayout
... >
<package.class.RecordButton
    android:id="@+id/btnRec"
    android:layout_width="125dp"
    android:layout_height="wrap_content"
    android:textOff="Start TEST"
    android:textOn="Stop TEST" />
...

您可以在布局中使用视图:

<LinearLayout
    ... >
    <com.project.RecordButton
        android:id="@+id/btnRec"
        android:layout_width="125dp"
        android:layout_height="wrap_content"
        android:textOff="Start TEST"
        android:textOn="Stop TEST" />
    ...
</LinearLayout>

带有android SDK的Eclipse可以自动确定您的视图:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM