goz*_*lli 1 java android casting
我可能会误解类型转换,但这是我的问题.
我有一个带有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>
Run Code Online (Sandbox Code Playgroud)
然后在我的活动中我声明了一个ToggleButton变量:
private ToggleButton mRecordButton = null;
Run Code Online (Sandbox Code Playgroud)
现在,我实现了一个名为RecordButton的ToggleButton子类:
class RecordButton extends ToggleButton {
OnCheckedChangeListener clicker = new OnCheckedChangeListener() {
...
};
public RecordButton(Context ctx) {
super(ctx);
setOnCheckedChangeListener(clicker);
}
}
Run Code Online (Sandbox Code Playgroud)
最后在onCreate我的ID中找到按钮:
mRecordButton = (RecordButton) findViewById(R.id.btnRec);
Run Code Online (Sandbox Code Playgroud)
这引发了一个ClassCastException.
为什么?如何RecordButton从ToggleButton(超类)将其转换为(子类)?
在您的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" />
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |