안녕하세요. 초보개발자입니다.
개발중에 궁금한게 있어서 이렇게 또 질문을 올립니다.
그림 설명을 드리자면 첫번째 그림에서 버튼0 번을 누르면 LinearLayout에 두번째 있는 버튼들 모임 Activity가 나오는 것입니다. 그리고 두번째 그림 버튼을 클릭하면 버튼이벤트로 intent를 이용해서 ㅅㅐ로운 화면으로 Activity 가 전환되는 것입니다.
파일
: first.java, first.xml (첫번째 그림) /// second.java, second.xml(두번째) /// third.java, third.xml(세번째)
제가 지금 inflate를 이용해서 first.xml에 있는 LinearLayout에 second.xml을 띄었습니다. 하지만 second.java에 정의 되어 있는 버튼이벤트가 발생하지 않고 있습니다.
inflate 말고 first에 있는 LinearLayout에 second를 나오게 하고 버튼을 클릭했을 때 third로 전환 되게 하는 방법이 있나요??
PS. TabHost를 이용해서는 구현해봤습니다. 하지만 Menu가 많아질 경우 TabHost를 이용해서는 두줄로 구현 할 수 없어서(제 실력이 안되서) 버튼으로 구현 하려는 중입니다. 많은 도움 부탁드립니다. 그리고 이번째가 3번째 글인데, 1번째와, 2번째 답변 달아 주신분들 정말 감사합니다. 많은 도움을 받았는데 제 실력이 부족해서 다시 글을 남기네요 ㅠ
헛...기초부터 다시 공부하셔야 겠어요...inflate의 개념은..view를 새롭게 하나 창조하는 것이지..액티비티를 새롭게 만드는게 아닙니다.
first,second 액티비티는 지금 아무것도 아닌 선언만 해놓은 것이구요. 사용되는게 아닙니다 지금 코드는..
first.xml 파일이름과 first.java가 같다고해서 해당 액티비티가 나오는게 아니구요;;
first.xml의 button id와 main의 button id가 같을 뿐더러..
위의 댓글에서 단것처럼 first.xml 의 view를 가져온 후
가져온 view에 있는 버튼에 리스너를 달아주지 않았으니 아무동작 안하는게 맞습니다..
책을 좀 자세히 보시면서 차근차근 하시는게 나을것같네요..




second.xml에 있는 버튼들의 리스너를 first의 this로 이벤트를 주어야 할 것입니다..(first가 activity class라면 setListener(first.this) 이런식으로 주어야 할 것입니다. 근데 보니 second.java가 새롭게 있으니. second로 넘겨준 context를 이용해서 listener를 등록해야 겠네요.
아니면 제대로 하고 있는데 클릭리스너를 달아주지 않았거나..(소스가 없으니..)
저런식으로 구조를 잡는건 좋은 것 같지 않습니다. TabHost로 가도 두줄로 구현하기가 어렵진 않습니다.(검색어를 TabHost custom 으로 하시면..내용이..)
메뉴가 동적이나 많아질 수 있다면 Actionbar의 addTab을 이용하여 tab구조를 구현하시면 자동으로 tabwidget의 넓이를 계산하고, 범위 이상을 넘어가는경우 scroll까지 자동지원해 줍니다.
저렇게 구현하면 나중에...겉잡을 수 없는 사태가 발생되지 않을까 생각됩니다..^^;;