2014-05-15 4 views
0

캐스트 할 수없는android.widget.Switch 내가 코드의 간단한 라인을 가지고 android.widget.ToggleButton

앱이 컴파일되어 내 Galaxy Nexus에 오류없이 설치됩니다. 그러나, 나는 (오프 슬라이더 /에) 스위치를 누른 후 즉시이 예외를 얻을 :

android.widget.switch는

어떤 제안을 android.widget.togglebutton 캐스팅 할 수없는 이유는 무엇입니까?

+1

'ToggleButton'이 아닌 'CompoundButton'으로 변환한다는 의미입니다. '개'를 '고양이'로 주조하는 것은 불가능합니다. – Geros

답변

0

왜 토글 버튼에 캐스트하고 싶습니까? 그냥 스위치 개체를 계속 사용하십시오. 버튼 클릭과 마찬가지로 이벤트 리스너를 구현하면됩니다. 그런 다음 부울 매개 변수에서 확인 된 상태를 가져옵니다.

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

    boolean on = isChecked; 
    } 
}); 
1

비록 SwitchToggleButtonCompoundButtonSwitchToggleButton 아니다 있습니다. 각각은 서로 바꾸어 사용할 수 없습니다.

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

대신 또는 (Switch) (특정, 더 나은) (일반적인 경우에 대한) (CompoundButton)에 캐스팅을 변경해보십시오.

public void VehicleDeleteModus(View v){ 
    boolean on = ((Switch) v).isChecked(); 
    (...) 
} 
관련 문제