我得到了这些简单的代码:
MainActivity:
public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
(...)
public void VehicleDeleteModus(View v){
boolean on = ((ToggleButton) v).isChecked();
(...)
}
}
XML:
<Switch
android:id="@+id/switch1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="VehicleDeleteModus"
android:paddingLeft="12dp"
android:text="Delete-Modus"
android:textColor="#ffffff" />
来源:http://developer.android.com/guide/topics/ui/controls/togglebutton.html
该应用程序编译并安装在我的Galaxy Nexus上,没有任何错误。但是,按下开关(开/关滑块)后立即出现此异常:
android.widget.switch无法强制转换为android.widget.togglebutton
有什么建议吗?
答案 0 :(得分:1)
即使Switch
和ToggleButton
为CompoundButton
,Switch
也不是ToggleButton
。每一个都不能互换使用。
CompoundButton
|
+-----------+----------+
| |
Switch ToggleButton
尝试将转换更改为(CompoundButton)
(一般情况下)或(Switch)
(具体,更好)。
public void VehicleDeleteModus(View v){
boolean on = ((Switch) v).isChecked();
(...)
}
答案 1 :(得分:0)
为什么要转换为切换按钮?继续使用switch对象。您只需要实现一个事件监听器,就像按下按钮一样。然后从布尔参数中获取检查状态。
switch1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//get boolean value from parameter.
boolean on = isChecked;
}
});