1

型キャストを誤解しているかもしれませんが、ここに私の問題があります。

ToggleButton を備えた Android View があります。

<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;

ここで、RecordButton という ToggleButton のサブクラスを実装します。

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.

なんで?RecordButton(スーパークラス) から (サブクラス)にキャストするにはどうすればよいToggleButtonですか?

4

2 に答える 2

5

XMLで、通常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" />
...

于 2012-11-27T10:44:37.100 に答える
2

ビューをレイアウトで使用できます。

<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 は、ビューを自動的に決定できます。

于 2012-11-27T10:47:17.913 に答える