타입 캐스팅에 대한 오해가있을 수 있지만 여기에는 제 문제가 있습니다. 이제android - 하위 클래스로 ToggleButton을 캐스팅하십시오
private ToggleButton mRecordButton = null;
, 나는 ToggleButton을의 서브 클래스를 구현 RecordButton 전화 :
<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의 변수를 선언 :
나는 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
을 표시합니다.
왜? ToggleButton
(수퍼 클래스)의 RecordButton
(하위 클래스)에 어떻게 캐스트 할 수 있습니까? 당신의 XML에
왜? 왜냐하면 XML에서는 RecordButton이 아닌 ToggleButton을 선언하기 때문입니다. RecordButton을 선언 해보십시오. – njzk2