본문 바로가기

Development Note/JAVA

[안드로이드] 안드로이드 키보드 완료 버튼 클릭 시 이벤트

 안드로이드 개발을 하다 보면 키보드 액션에 특정 이벤트를 주고 싶은 때가 있습니다. 이를테면 키보드의 완료 버튼을 누르면 키보드가 사라지면서 다음 화면으로 넘어간다던지 하는 등의 이벤트죠. 이런 경우에 사용할 수 있는 안드로이드 API가 있습니다. OnEditorActoinListener 가 그것입니다. OnEditorActionListener는 네 가지 단계에 걸쳐 프로젝트에 적용할 수 있습니다.



1. 해당 클래스에 OnEditorActionListener 인터페이스를 implement한다(OnEditorActionListener를 import한다).

2. onEditorAction() 메소드를 오버라이드한다.

3. onEditorAction() 메소드 내에 조건을 주고, 원하는 이벤트를 작성한다.

4. EditText 위젯에 setOnEditorActionListener()를 연결시켜준다.


아래의 샘플 코드를 보시면 이해가 쉽습니다.



package com.example.sampleproject;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener; //OnEditorActionListener import하기

public class MainActivity extends Activity implements OnEditorActionListener{ //OnEditorActionListener 인터페이스 implement하기

	private EditText mEditText;
	private Button mButton;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mEditText = (EditText)findViewById(R.id.editText1);
		mButton = (Button)findViewById(R.id.button1);
		
		mEditText.setOnEditorActionListener(this); //mEditText와 onEditorActionListener를 연결
		
	}

	@Override 
	public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
		// TODO Auto-generated method stub

		//오버라이드한 onEditorAction() 메소드
		
		if(v.getId()==R.id.editText1 && actionId==EditorInfo.IME_ACTION_DONE){ // 뷰의 id를 식별, 키보드의 완료 키 입력 검출
			
			//이 부분에 원하는 이벤트를 작성합니다
			//이 부분에 원하는 이벤트를 작성합니다
			//이 부분에 원하는 이벤트를 작성합니다

		}
		
		return false;
	}
}