안드로이드 개발 질문/답변
(글 수 45,052)
edittext에서 엔터키를 쳤을 때 이벤트 발생하는 법을 알고 싶습니다
onkeylistener를 사용하였는데요 ans.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(event.getAction() != KeyEvent.ACTION_DOWN) return true;
else {
if (keyCode == 66){
// do something
}
}
return true; //false로 하면 이후의 모든 키 이벤트를 무시한다.
}
이렇게 구현했더니 Backspace키가 먹지 않네요...
이유를 통 알수가 없네요.. 고수분들의 답변 부탁드려요~
2009.07.16 13:16:24
method, constant 의 선언만 있고, 값을 가질 수 없기 때문에 당연히 메모리 할당 - instance를 만들 수 없죠.
abstract method도 못 가지죠.
위키피디아 인용합니다. http://en.wikipedia.org/wiki/Interface_(Java)
As interfaces are implicitly abstract, they cannot be directly instantiated except when instantiated by a class which implements the said interface. The class must implement all of the methods described in the interface, or be an abstract class. <-- 이 문장을 혼동하신듯...
abstract method도 못 가지죠.
위키피디아 인용합니다. http://en.wikipedia.org/wiki/Interface_(Java)
As interfaces are implicitly abstract, they cannot be directly instantiated except when instantiated by a class which implements the said interface. The class must implement all of the methods described in the interface, or be an abstract class. <-- 이 문장을 혼동하신듯...
2009.07.16 13:39:22
-View.Interfac
OnClickListener는 Interface입니다.
-android datepicker sample code
http://developer.android.com/guide/tutorials/views/hello-datepicker.html// add a click listener to the button mPickDate.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { showDialog(DATE_DIALOG_ID); } });
위에서 보시면 new로 선언한 뒤에 아래에서 바로 abstract method선언해서 사용하시는 것을 볼 수 있습니다.
제가 말씀드린 것도 바로 이런 방법이구요...
2009.07.16 13:36:26
제가 했던 방식은 다음과 같습니다. 그냥 참고하세요
username.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View view, int keycode, KeyEvent event) {
if (keycode == KeyEvent.KEYCODE_ENTER) {
// 원하는 동작 코딩은 여기에~.
return true;
}
return false;
}
});
2009.07.16 13:44:07
올려주신 코드를 아래에서 살펴보면,
ans.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(event.getAction() != KeyEvent.ACTION_DOWN) return true;
else { // 여기에서 key down 이 아닌것 중에서 66번 키코드가 아니면, 아무것도 못하게 되는것 같습니다.
if (keyCode == 66){
// do something
}
}
return true; //false로 하면 이후의 모든 키 이벤트를 무시한다.
}
파란글씨를 아래와 같이 바꿔주시고
else if (keyCode == 66){
// do something
}
맨아래는 다시 return false로 바꾸면 제가 했던 방식과 동일하게 처리 될것 같습니다.
안드로이드 ApiDemo의 com.example.android.apis.view.List12 를 참조하시죠.
혹은 View.onKeyDown() 을 구현해 보셔도 되지 않을까요?