안드로이드 개발 질문/답변
(글 수 45,052)
왜그럴까요? @,@
정황은 이렇습니다.
1. ViewFlipper 에 두개의 View 를 넣는다.
2. 첫번째 뷰의 버튼 클릭 리스너로 onClick 시 Flipper 의 showNext() 호출.
3. 두번째 뷰의 onKey 리스너로 backbutton 키를 누르면 flipper 의 showPrevious() 를 호출한다.
이 과정에서, 첫번째와 두번째 뷰를
LinearLayout settingMain = (LinearLayout)mInflater.inflate(R.layout.setting, null);
이런식으로 inflate 시켜서 생성 후 setOnKeyListener 를 통해 리스너 등록 했었거든요?
헌데 두개의 뷰 중 하나라도 inflate 을 통해 생성한거면 onkey 리스너가 동작 안합니다.
하지만 둘 다 inner class 로 해서 아래와 같이 생성하면,
public class SettingAbout extends LinearLayout {
public SettingAbout(Context context) {
super(context);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.setting_about, this, true);
this.setLayoutParams(thisLayout);
this.setFocusableInTouchMode(true);
}
}
잘 동작 합니다. -_-
왜 그럴까요~~