android.widget.Switch无法强制转换为android.widget.ToggleButton

时间:2014-05-15 01:58:05

标签: android android-switch android-togglebutton

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

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

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

即使SwitchToggleButtonCompoundButtonSwitch也不是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;
    }
});