2012-02-24 3 views
1

EditText (int 허용됨) 및 KeyEvent를 사용하여 위젯을 개발하려고합니다. 문제는 '0'을 누를 때, KeyEvent를 감지하지만 EditText에 '0'을 쓰지 않는 경우입니다. 내가 그들을 누르기 위해서 숫자를 더해야합니다.setText on EventKey with EditText

et1.setOnKeyListener(new OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     if (KeyEvent.ACTION_UP != event.getAction()) { 
      switch (keyCode) { 
       case KeyEvent.KEYCODE_0: 
        //Do something... 
        break; 
       default: 
        return false; 
      } 
     } 
     return true; 
    } 
}); 

나는 그렇게하려고 시도했지만 너무 효율적이지 않습니다.

et1.setText(et1.getText().toString + "0"); 

어떤 종류의 해결책을 알고 있습니까?

+1

휠을 재발 명하려는 경우 : 'android : inputType = "number"'http://stackoverflow.com/questions/4645119/how-to-set-only-numeric-value-for-edittext- 안드로이드. –

+0

내 activity.xml에서 사용했지만 내 문제는 내가 키를 누르면 내 EditText에 나타나지 않지만 KeyEvent가 생성됩니다. 나는 둘 다 할 수 있니? –

답변

1

나 자신에게 명확 펩 만들기 위해 노력하자 : 당신이 달성하려고하는 것은 단지 정수 (숫자) 입력을 허용하는 EditText를하는 경우, 당신은 속성을 추가 할 수 있습니다

1) 및 그이야 그것. 해당 동작에 대한 사용자 지정 컨트롤이 필요하지 않습니다.

android:inputType="number" 

2) 당신이 당신의 EditText의 모든 입력을 사용하면 무시 onKey 방법에 true를 반환하여 차단하고 있기 때문에 단순히이다 얻을 해달라고 이유.

refonKey가 반환해야합니다 말한다 : 리스너가 그렇지 않은 경우는 false 이벤트를 소비하고있다

진정한합니다. 당신이 true을 반환하는 경우, 의미

, 당신은, 요금에 EditText 안드로이드 늘 입력 아무것도입니다. 자신이 제공 한 코드에서 수행하지 않으므로 EditText가 채워지지 않습니다.

그래서 이전처럼 핸들러를 모두 제거하고 inputType 속성을 xml에 추가해야합니다. 업데이트

업데이트해야하는 경우


EditText, 내가 처음에 입력을 추적하는 것이 좋습니다 다른의 입력 (EditText2)을 기반으로 (의이 EditText1를 부르 자) TextWatcher으로 설정하고 textEditText2을 처리 된 값으로 설정하십시오.

예제 코드는 this similar issue입니다.

+0

많은 관심을 가져 주신 @Zortkun. 이미'xml'에서'inputType'을 사용하고 있습니다. 저는 두 개의'EditText'를 사용하여 위젯을 만들고 싶기 때문에 저것을 요구하고 있습니다. 하나의'EditText'에 숫자를 넣을 때, 다른 하나는 산술 변환으로 채워지므로, 나는 이벤트를 수행하고 채우기를 원합니다. –

+0

안녕하세요. 답변을 수락 해 주셔서 감사하지만 다른 문제가 있다고 생각합니다. 업데이트하고 몇 가지 방법을 제안 해 드리겠습니다. –

+0

그게 내가 필요한거야! 많은 감사합니다! –