마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

View 가 3겹으로 중첩되어 있을때 바로 이전 view로 돌아갈 수 있는 방법

0 추천
안녕하세요.

 

View라고 해야할지 Layout이라고 해야할지 모르겠는데

Class 가 A, B, C  3개가 있고 Activity는 A뿐이고 나머지 B, C는 Framelayout class 입니다.

A에서 버튼을 누르면 메뉴 형식의 Layout인 B의 레이아웃이 화면을 덮고,

B에서 다시 버튼을 누르면 C의 레이아웃이 화면을 덮는 형태인데요

각 클래스의 뷰를 띄울때는 ((ViewGroup)getParent()).addView(X) 를 사용했습니다.

문제는 C에서 특정버튼을 누르면 B로 돌아가는게 안되는데요.

C에서 A로 가는건 getParent().removeView(this); 하면 되는데 C에서 B화면으로 돌아가는건 어떻게 해야 할까요?
탯탯탯 (430 포인트) 님이 2013년 4월 8일 질문
탯탯탯님이 2013년 4월 8일 수정

1개의 답변

0 추천
 
채택된 답변
화면을 덮는다는게 addView를 하신건가요?

B에서 C를 addView할 때 B를 없애지 않았다면 C를 제거하면 B가 남을텐데요
appa (3,380 포인트) 님이 2013년 4월 8일 답변
탯탯탯님이 2013년 4월 8일 채택됨
네. addView를 했고, C화면에서 getParent().removeView(this); 하면
B가 아니라 A로 가네요....
B와 C는 같은 view에 add하셨나요?
B에서 C로 이동할 때 B를 remove, invisible, gone등으로 제거하지 않았는지 확인해보세요.
정확히 뷰의 구성이 어떻고 어떤 절차 의해 A->B->C로 이동했는지 알아야 문제를 알 것 같습니다.
헛. 그렇네요. 제가 B에서 C를 addview 할때 B를 invisible 시켰네요...
그럼 이제는 다른게 문제군요. C에서 바로 A로 가게 하는것....
어떻게 해야 할까요?
B와 C가 같은 view에 add되었고 그 뷰가 B와 C만을 위한 것이라면 getparent().removeallview() 하시면 됩니다.
음.. A에 가장 상위메뉴가 있기때문에... 이렇게하면 A메뉴까지도 지워지네요. B와 C만 없어져야 하는데.. 방법이 있을까요?
가장 상위메뉴라는건 어떤건가요.
제가 그 레이아웃의 구조를 알 수가 없어서 뭐라고 답하기 어렵군요.
뷰들의 계층 구조를 잘 파악하시고 add와 remove를 해주세요.
...