본문 바로가기
코딩일기/android studio

안드로이드 독학 5일차 : EditText 이벤트 처리

by 욱파이어니어 2021. 3. 10.
728x90
반응형

2일차때 EditText 설정하는것을 알아봤다면 이제 적어 놓은것들을 자바소스로 받아서 한번 출력해보자

 

EditText에 관한 기본적인 설명에 관해서는 

아래 링크를 통해서 보면 될것 같다.

wpioneer.tistory.com/12

 

안드로이드 독학 3일차 : EditText

에디트 텍스트는 우리가 입력이 가능한 텍스트필드이다. 이제 이것의 속성을 알아보자 android:autoText 자동으로 타이핑 오류를 교정한다(이걸 실제로 써봤지만 달라진게 뭔지 모르겠다) android:drawa

wpioneer.tistory.com

 

 

EditText에서 우리가 글을 다른데로 보내거나 할땐 우리는 두가지 방법을 쓴다.

1. 키보드 안에 있는 전송이나 완료 버튼 누르기

2. 키보드에서 나와 버튼을 따로 누르기

 

각각의 방법에서 어떻게 출력할것인지 알아보자.

 

1. 키보드 안에 있는 전송이나 완료 버튼 누르기

 

안드로이드에서의 키보드를 확인해보면

위 부분을 다른 아이콘을 볼수 있는데

이는 변경이 가능하다

이를 가능케 하는 속성이 

android:imeOptions="값" 이다 

 

안에 값에 따른 모양은 아래와 같다.

참조 블로그 : https://recipes4dev.tistory.com/92

 

이제 외형적인것을 봤으니 자바 소스적으로 어떻게 하면 EditText에서 적혀져 있는것을 가져올지 예제를 통해서 보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText edit1 = (EditText)findViewById(R.id.edit1);
        edit1.setOnEditorActionListener(new EditText.OnEditorActionListener(){
            @Override
            public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
                Toast.makeText(getApplicationContext(),edit1.getText(),Toast.LENGTH_SHORT).show();
                return true;
            }
        });
    }
cs

EditText의 ID를 가져오는 부분에서부터 보자.

 

EditText는 가져올때 아래와 같이

final EditText edit1 = (EditText)findViewById(R.id.edit1);

final로 받았는데 final로 받은 이유는 무명클래스에서 edit1을 참조하기 때문에 바뀌지 않을것이라는것을 보장하기 위해서이다. 

 

edit1.setOnEditorActionListener() 이 함수는 EditText 내에 있는 imeOption에서의 이벤트를 받기 위해서이다.

해당 메소드는 EditText.OnEditorActionListener() 이벤트 리스너를 함수 인자로 받기 때문에 무명 클래스로 

해당 인터페이스의 객체를 생성해야 한다.

 

EditText.OnEditorActionListener() 해당 인터페이스오 객체를 새로 생성하면 

onEditorAction() 메소드를 오버라이딩 해서 재정의 해야 한다.

 

나는 onEditorAction() 메소드 안에 edit1의 값을 .getText() 메소드로 불러오고 .toString()으로 해서 해당 값을 문자열로

변경 한것을 Toast 메시지로 띄웠다.

 

그리고 중요한 점은 onEditorAction() 메소드는 반환형이 boolean인대

true로 설정을 하면 입력이 완료 되어도 

해당 이벤트 리스너가 계속 작동해서 이벤트를 수신한다.

false로 하면 이벤트 리스너가 입력이 완료되면 이벤트 리스너는 작동을 중지한다.

그래서 false로 하면  키보드도 없어진다.

반응형