android.widget.Switch не может быть приведен к android.widget.ToggleButton
Я получил эти простые строки кода:
Основная деятельность:
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 ответа
Даже если Switch
а также ToggleButton
являются CompoundButton
, Switch
это не ToggleButton
, Каждый не может быть использован взаимозаменяемо.
CompoundButton
|
+-----------+----------+
| |
Switch ToggleButton
Попробуйте изменить кастинг на (CompoundButton)
(для общего случая) или (Switch)
(конкретнее, лучше).
public void VehicleDeleteModus(View v){
boolean on = ((Switch) v).isChecked();
(...)
}
Почему вы хотите привести к кнопке переключения? Просто продолжайте использовать объект переключения. Вам просто нужно реализовать прослушиватель событий, как если бы вы нажали кнопку. Затем получите проверенный статус из логического параметра.
switch1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//get boolean value from parameter.
boolean on = isChecked;
}
});