안드로이드 개발을 하다 보면 키보드 액션에 특정 이벤트를 주고 싶은 때가 있습니다. 이를테면 키보드의 완료 버튼을 누르면 키보드가 사라지면서 다음 화면으로 넘어간다던지 하는 등의 이벤트죠. 이런 경우에 사용할 수 있는 안드로이드 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; } }
'Development Note > JAVA' 카테고리의 다른 글
[안드로이드] 인앱결제 (In-App Billing, v3) IllegalArgumentException 해결방법 (0) | 2014.07.02 |
---|---|
[안드로이드] ClassNotFoundException 발생시 해결방법 (1) | 2014.06.25 |
[안드로이드] 안드로이드 SDK 업데이트후 ADT 실행 오류 (2) | 2014.06.21 |
[안드로이드] 액티비티 화면을 가로, 혹은 세로로 고정하기 (1) | 2014.06.11 |
이클립스(Eclipse) 'could not write file: ~.classpath' 에러(Error) 해결방법 (2) | 2014.01.03 |