안드로이드 개발 팁
안드로이드 EditText 이벤트 처리 정보
Android에서는 EditText 에서 입력 이벤트 처리를 해 주어야 할 경우가 있어요
키보드에서 입력하는 동안의 이벤트와 그리고 enter키가 눌렸을 때의 이벤트 처리 등 해줘야 할 부분이 있어요
EditText 에 있는 OnEditorActionListener 와 OnKeyListener 를 이용해서 하게 되면 Enter와 back 키와 같은 이벤트를 처리 할 수 있어요
OnEditorActionListener와 OnKeyListener 의 결과가 비슷하기 때문에 OnEditorActionListener를 이용한 예제 코드를 보세요
- package com.example.coding;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.widget.EditText;
- import android.widget.TextView;
- import android.widget.TextView.OnEditorActionListener;
- public class EditTextEvent extends Activity implements OnEditorActionListener{
- EditText editInput = null;
- TextView textResult = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- editInput = (EditText)findViewById(R.id.EditText_example);
- editInput.setOnEditorActionListener(this);
- }
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- switch(v.getId())
- {
- case R.id.EditText_Input:
- {
- if(event.getAction() == KeyEvent.ACTION_DOWN)
- {
- Log.i("테스트", "테스트");
- }
- break;
- }
- }
- return false;
- }
- }
위 처럼 구현하시면 돼요
하지만 고려할 사항이 있어요
소프트 키보드에서 입력한 순간 순간마다의 이벤트는 받지 못해요. OnKeyListener를 이용하여도 마찬가지 로 이벤트를 받지 못해요
이럴 경우에는 addTextChangedListener 라는 것을 이용하세요.
이것에 대한 예제 다음을 참고하세요~
- package com.example.coding;
- import android.app.Activity;
- import android.os.Bundle;
- import android.text.Editable;
- import android.text.TextWatcher;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.widget.EditText;
- import android.widget.TextView;
- import android.widget.TextView.OnEditorActionListener;
- public class EditTextEvent extends Activity implements OnEditorActionListener{
- EditText editInput = null;
- TextView textResult = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- editInput = (EditText)findViewById(R.id.EditText_example);
- editInput.setOnEditorActionListener(this);
- editInput.addTextChangedListener(textWatcherInput);
- }
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- switch(v.getId())
- {
- case R.id.EditText_Input:
- {
- if(event.getAction() == KeyEvent.ACTION_DOWN)
- {
- Log.i("테스트", "테스트");
- }
- break;
- }
- }
- return false;
- }
- TextWatcher textWatcherInput = new TextWatcher() {
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- Log.i("onTextChanged", s.toString());
- }
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- Log.i("beforeTextChanged", s.toString());
- }
- @Override
- public void afterTextChanged(Editable s) {
- Log.i("afterTextChanged", s.toString());
- }
- };
- }
TextWatcher안에 있는 onTextChanged는 변경된 텍스트에 대한 결과를 beforeTextChanged는 변경되기 전에 입력 되었던 텍스트에 대한 내용을 afterTextChanged는 텍스트가 변경이 되었을 때의 결과를 보여줘요
개발자분들에게 도움이 되시길 바라며
즐거운 시간 보내세요~
댓글 없음:
댓글 쓰기