2010-06-25 3 views
18

세 탭이있는 TabHost가 있습니다. 첫 번째 탭의 콘텐츠는 사용자 정의 액티비티의 의도입니다. contentview는 두 개의 EditText와 두 개의 CheckBox (및 버튼)가 포함 된 상대 레이아웃입니다.Android : EditText가 다시 활성화 된 후에 포커스를 얻을 수 없습니다.

각 checbox를 선택하면 하나의 EditText와 다른 체크 박스를 활성화/비활성화 할 수 있습니다. 나는 이렇게 이것에 대해 갔다 :

chkPolaziste.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    { 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
     { 
      if (isChecked) 
      { 
       entryPolaziste.setFocusable(false); 
       entryPolaziste.setEnabled(false); 
       chkOdrediste.setFocusable(false); 
       chkOdrediste.setEnabled(false); 
      } 
      else 
      { 
       entryPolaziste.setEnabled(true); 
       entryPolaziste.setFocusable(true); 
       chkOdrediste.setEnabled(true); 
       chkOdrediste.setFocusable(true); 
      } 
     } 
    }); 

그리고 그게 작동합니다. 하나의 체크 박스가 선택되면 다른 체크 박스와 그의 EditText가 비활성화되고, 체크 박스를 선택 해제하면 EditText와 다른 체크 박스가 활성화됩니다. 하지만, 활성화 된 후에는 EditText에 아무 것도 입력 할 수 없습니다. 그것은 내가 잠길 때 그냥 클릭하고 다른보기로 초점을 전환합니다. 컨트롤이 완전히 활성화되지 않은 것처럼 보입니다.

또한 requestFocus()를 사용하여 다시 활성화 된 EditText에 포커스를 설정하려고 시도했지만 setFocusableInTouchMode()를 시도했지만 어느 것도 작동하지 않았습니다.

저는 안드로이드 장치가 없으므로 에뮬레이터에서만 테스트합니다 (최소 SDK는 1.6입니다).

+0

중요 사항 :이 동작은 터치에서만 나타납니다 (EditText를 클릭하면 정상적으로 작동합니다. 그 이유는 setFocusableInTouchMode 메서드를 시도한 이유입니다). –

답변

35

해결 방법 :

사용 setFocusableInTouchModesetFocusable, 둘 다.

+0

고마워요, 저에게 잘 맞았습니다 – TheRealKingK

+0

고마워요. – HeavyE

+1

와우, 디버그에서 마침내 –

관련 문제