2012-12-18 5 views
3

Android UI에서 버그를 발견했을 수 있다고 생각하지만 잘못된 내용을 잘못 처리하지는 않았 으면합니다. 다음은 문제의 원인이되는 실행중인 코드의 단순화 된 버전입니다. 이 리스너는 내 UI의 특정 NumberPicker에 설정되며 제대로 비활성화/설정되지만 사용자가 비활성화하는 다른 NumberPickers 중 하나의 값을 변경하면 이상하게 작동합니다.NumberPicker가 비활성화되었을 때 회색으로 표시되지 않음

입력을 제대로 비활성화하지만 값을 회색으로 표시하지 못하여 활성화 된 것처럼 보입니다. 이것은 의도 된 것입니까? 내가 뭔가 잘못하고 있는거야?

NumberPicker.OnValueChangeListener diceChangeListener = new NumberPicker.OnValueChangeListener() { 
    @Override 
    public void onValueChange(NumberPicker picker, int oldVal, int newVal) { 
     View parent = (View) picker.getParent();  

     if (newVal == 0) { 
      ((NumberPicker) parent.findViewById(R.id.diceCountPicker1)).setEnabled(false); 
     } else if (oldVal == 0) { 
      ((NumberPicker) parent.findViewById(R.id.diceCountPicker1)).setEnabled(true); 
     } 
    } 
}; 

더 나은 방법이 있는지 또는 합법적 인 버그인지 알려주세요. 그것이 버그 인 경우 해결 방법이 있습니까?

편집 : 여기에 XML에서 diceCountPicker1의 정의입니다 :

<NumberPicker 
    android:id="@+id/diceCountPicker1" 
    android:layout_width="48dp" 
    android:layout_height="128dp" 
    android:descendantFocusability="blocksDescendants" 
    /> 

편집 2 :

내가 에뮬레이터에서 이것을 테스트하고 문제가 젤리 빈 이전에 존재하지 않는 것을 확인했다 (4.1) . 그것은 ICS에서 제대로 작동합니다. 그거 짜증나네. 하지만 지금은 그걸로 살 수 있을지도 몰라. 이 버그를 해결할 수있는 잠재적 인 방법을 공개적으로 남겨 두 겠지만, 나에게는 실제 버그가있는 것처럼 보이고, 수정 될 수 있을지 의심 스럽다.

+0

당신은 xml 파일에서'diceCountPicker1'이 어떻게 선언되는지 레이아웃 코드를 게시 할 수 있습니까? –

+0

질문을 NumberPicker의 XML로 업데이트했습니다. – Utoxin

+0

아래에 게시 된 솔루션을 참조하십시오. 그것이 나를 위해 잘 작동하는 것으로 시도하십시오. 감사. –

답변

1

글쎄, 추가 피드백이 들어오지 않고 앞으로 나가서 닫을 것입니다. 내가 아는 것은 여기에있다 :

이것은 Jellybean에 도입 된 버그 인 것으로 보인다. 나는 에뮬레이터에서 테스트했으며, UI는 ICS 및 그 이전 버전에서 예상대로 작동합니다. 당분간이 문제를 해결하고 공식 버그 보고서를 제출하려고합니다.

0

이렇게 시도하십시오.

 NumberPicker npicker = (NumberPicker) findViewById(R.id.diceCountPicker1); 
     npicker.setMaxValue(100); 
     npicker.setMinValue(0); 

     npicker.setOnValueChangedListener(new OnValueChangeListener() { 
      @Override 
      public void onValueChange(NumberPicker picker, int oldVal, 
        int newVal) { 
       // Conditions for Enable/Disable picker     
       if (newVal == 0) { 
        picker.setEnabled(false); 
       } else if (oldVal == 0) { 
        picker.setEnabled(true); 
       } 
      } 
     }); 

나를 위해 잘 작동하며 추가 된 조건에 따라 사용/사용 안 함으로 올바르게 작동합니다.

감사합니다.

+0

이것은 내가하는 일이 아닙니다. 하나의 NumberPicker에 Listener가 있고 다른 여러 NumberPickers를 사용할 수 없습니다. 내 코드와 비교할 때 당신이하는 것에 대해 다른 것을 보지 못한다. – Utoxin

+0

Honeycomb 또는 ICS에서 테스트 해 보았습니다. – Utoxin

0

NumberPicker 및 DatePicker xml 레이아웃의 android:enabled="false" 설정은 Android 4.0.4 기기의 나를 제어 할 수 없습니다. 그러나 프로그래밍 방식으로 setEnabled(false)을 통해 예상대로 작동합니다.

관련 문제