EditText로 입력을 받을 때 숫자만 입력 받고 문자가 포함되었을 경우 다시 
입력받도록 하기위한 간단한 코드이다.


xml layout이 다음과 같을 경우 
inputType="number"로하면 오직 양의 정수만 입력 가능하다. 
키보드에 특수 문자나 +, -, 소수점이 표시되더라도 오직 양의 정수만 입력
가능하다.

그리고 maxLength="4"로하면 4개의 숫자만 입력이 가능하다.
xml layout 파일을 아래와 같이 설정함을 통해서 숫자만 입력되도록 할수 있다.

    <EditText 
        android:id="@+id/editPhoneNum"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txtPhoneNum"
        android:inputType="number"
        android:maxLength="4"
        android:textSize="40sp"/>

xml layout을 이용하거나 혹은 소스 상에서 체크할려면 다음과 같이 하는 방법도 
가능하다.

EditText editPhone = (EditText)findViewById(R.id.editPhoneNum);
try {
String str = editPhone.getText().toString().trim();

//아래 str에 숫자만 있을 경우는 NumberFormatException이 
                //발생치 않으나 숫자 이외의 어떤 문자가 포함되면 
                //NumberFormatException이 발생한다.
//따라서 이 Exception이 발생하면 숫자 이외의 값이 입력되었다고 
                //판단하고 재 입력 받도록 처리하면된다.

int rt = Integer.parseInt(str);
Toast.makeText(this, "RT : "+rt, 1).show();
} catch(NumberFormatException e){
Toast.makeText(this, "숫자만 입력하세요", 1).show();
}

한 마디로

Integer.parseInt()를 이용하되 NumberFormatException을 이용해서 
처리할 수 있다.

+ Recent posts