0

我得到了这些简单的代码行:

主要活动:

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

有什么建议么?

4

2 回答 2

1

即使Switchand ToggleButtonare CompoundButtonSwitch也不是 a ToggleButton。每一个都不能互换使用。

         CompoundButton
                |
    +-----------+----------+
    |                      |
 Switch               ToggleButton

尝试将转换更改为(CompoundButton)(对于一般情况)或(Switch)(具体,更好)。

public void VehicleDeleteModus(View v){
    boolean on = ((Switch) v).isChecked();
    (...)
}
于 2014-05-15T02:15:31.507 回答
0

为什么要投射到切换按钮?继续使用 switch 对象。您只需要实现一个事件侦听器,就像您单击按钮一样。然后从布尔参数获取检查状态。

switch1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    //get boolean value from parameter.

    boolean on = isChecked;
    }
});
于 2014-05-15T02:11:03.677 回答