2015-01-06 2 views
1

스위치를 프로그램 적으로 끄기 상태로 전환하려고하지만 문제가 발생합니다.android 스위치가 프로그래밍 방식으로 전환되지 않음

나는 myswitch.setischecked (false)와 myswitch.toggle을 모두 사용해 보았고 스위치는 현재 상태로 두지 만 파란색에서 회색으로 배경을 변경하므로 안 드 로이드는 스위치가 꺼져 있다고 생각하지만 표시는하지 않는다. 이것을 반영하지 않습니다. 여기

이 고통 다른

final Switch InstaPrint = (Switch) rootView.findViewById(R.id.instaprint); 
     final Switch MyZebraSwitch = (Switch) rootView.findViewById(R.id.myzebraswitch); 
     final Switch StockZebraSwitch = (Switch) rootView.findViewById(R.id.stockzebraswitch); 
     final Switch StoreZebraSwitch = (Switch) rootView.findViewById(R.id.storezebraswitch); 

     final Spinner MyZebraSpinner = (Spinner) rootView.findViewById(R.id.myzebraspinner); 
     final Spinner StockZebraSpinner = (Spinner) rootView.findViewById(R.id.stockzebraspinner); 
     final Spinner StoreZebraSpinner = (Spinner) rootView.findViewById(R.id.storezebraspinner); 


     //InstantPrint 

     InstaPrint.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if(InstaPrint.isChecked()) 
       { 
        if(!MyZebraSwitch.isChecked() && !StockZebraSwitch.isChecked() && !StoreZebraSwitch.isChecked()) 
        { 

         Vibrator vib = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE); 
         vib.vibrate(1000); 
         // PlayFile("bell.mp3"); 
         Toast toast = Toast.makeText(getActivity(), "You must select at least one printer", Toast.LENGTH_LONG); 
         toast.show(); 
         InstaPrint.toggle(); 
        } 
       } 
      } 
     }); 

누군가 내 코드?

EDIT - 내 장치의 방향을 변경하면 문제가 해결된다는 것을 발견했습니다. 스위치가 조각으로 포함되어 조각을 다시 그리면 문제를 해결할 수있는 것처럼 보입니다. 이제 조각은 다시 그리는 방법을 알아야합니다. 프로그래밍 방식으로!

답변

3

상태 수신기 내부에서 toggle() 또는 setChecked(boolean) 메서드를 호출하는 것이 직관적 인 것처럼 보입니다. 어떤 종류의 무한 루프 나 이상한 동작을 기대할 수 있습니다. 프로그래밍 방식으로 상태가 변경된 콜백 내부에서 상태를 변경하기 때문입니다. 나는 메서드를 View 클래스에서 상속받은 대신 사용하려고 시도합니다.

+0

그게 그 의견에 더 가치가 있고 대답에 대한 점수 가치가 정확하고 내 문제를 해결 – dave

+0

오리 엔테이션 변경 문제가 내 기대를 지원한다는 사실을 @dave. 액티비티와 프래그먼트를 죽이고 다시 그리기 (모든 오리엔테이션 변경과 함께 발생) 나는 의심스러운 무한 루프 프로세스를 없애 버릴 것입니다. 내가 조각을 다시 그릴 때마다 문제를 고치려고했다. – steve

+0

@dave 귀하의 앱으로 행운을 빌어서 기쁩니다! – steve