프로그래밍/android2013.07.29 11:37

키보드가 표시되고 있을 때 EditText에서 백버튼을 누르면 키보드만 닫힌다.

여기서 추가로 뭔가 다른 동작을 하고 싶다면 이렇게 해야한다.


일단 Edittext를 상속받아서 하나 만들고, 그 안에 리스너도 하나 만들어 주면 된다.



   
public class BackPressEditText extends EditText
{
	private OnBackPressListener _listener;
	
	
	public BackPressEditText(Context context)
	{
		super(context);
	}
	
	
	public BackPressEditText(Context context, AttributeSet attrs)
	{
		super(context, attrs);
	}
	
	
	public BackPressEditText(Context context, AttributeSet attrs, int defStyle)
	{
		super(context, attrs, defStyle);
	}
	
	
	@Override
	public boolean onKeyPreIme(int keyCode, KeyEvent event)
	{
		if (keyCode == KeyEvent.KEYCODE_BACK && _listener != null)
		{
			_listener.onBackPress();
		}
		
		return super.onKeyPreIme(keyCode, event);
	}
	
	
	public void setOnBackPressListener(OnBackPressListener $listener)
	{
		_listener = $listener;
	}
	
	public interface OnBackPressListener
	{
		public void onBackPress();
	}
}




   
public class MainActivity extends Activity
{
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		BackPressEditText edit1 = (BackPressEditText) findViewById(R.id.editText1);
		edit1.setOnBackPressListener(onBackPressListener);
	}
	
	
	private void didBackPressOnEditText()
	{
		finish();
	}
	
	private OnBackPressListener onBackPressListener = new OnBackPressListener()
	{
		@Override
		public void onBackPress()
		{
			didBackPressOnEditText();
		}
	};
}


TestEditText.zip


Posted by 쎄미

댓글을 달아 주세요

  1. 감사합니다~

    2018.10.11 11:42 신고 [ ADDR : EDIT/ DEL : REPLY ]