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

FragmentTabHost 와 Fragment 로 다음과 같은 UI를 구성하고 싶습니다

0 추천

안녕하세요

아래와 같은  UI가 필요해서 FragmentTabHost과 Fragment를 이용해 구성중입니다.

요지는 하단 탭바가 존재하며 탭바를 누를 시 등록된 Fragment 를 보여줍니다.

Fragment에는 단순히 제목과 작성자를 뿌려주는 리스트를 보여주는데

리스트아이템을 클릭 시 새로운 Fragment2로 대체되면서 디테일한 정보를 보여주게 됩니다.

이때 애니메이션 효과가 들어가며 하단 탭바가 유지되어야 하며 Back 버튼 클릭 시 

이전화면으로 돌아와 다시 리스트를 뿌려주어야 합니다.

이를 위해서 FragmentTabHost 에 두개의 Fragment를 Add해주었고

Fragment1에서 아이템 클릭 시 Fragment2를 보여주게 했습니다.

이걸 위해 사용한 코드는 다음과 같습니다.

Fragment newFragment = new SubFragmentTab1(); 
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.container4, newFragment );
transaction.addToBackStack(null);
transaction.commit(); 
 
하지만 이 코드를 호출하면 다음과 같은 에러를 마주하게 됩니다.
java.lang.IllegalArgumentException: No view found for id 0x7f090012 (com.example.study:id/container4) for fragment SubFragmentTab1{41385c78 #1 id=0x7f090012}
 
분명 XML 에 ID값도 다 정의했지만 이런 에러가 발생해서 구글링을 엄청나게 했음에도 답을 찾지 못했습니다.
제가 아예 안되는길을 가고 있는건 아닌가 하는 생각이 들기도 합니다.
 
고수님의 조언을 부탁드리며 스터디용으로 하기 때문에 필요시 전체 소스 제공이 가능합니다.
부탁드려봅니다.
 
* 추가 설명
FragmentActivity 를 상속받아 Main을 잡았으며 그 안에서 FragmentTabHost 를 써서 탭을 추가하였습니다.
각각의 Fragment 클래스 4개가 생성되며 A Fragment에서 A' Fragment 를 위 코드를 써서 보여주려는 것...
나중에 소스파일 전체를 올리도록 하겠습니다.

예딸 (120 포인트) 님이 2014년 1월 7일 질문
예딸님이 2014년 1월 7일 수정

3개의 답변

0 추천
무슨 행동을할때 오류가 난다는건지 잘 모르겠지만 구글APDemos APK 실행하셔서

com.example.android.apis.app.FragmentNestingTabs.java 에서 탭화면에서 프래그먼트 스택 쌓는예제가 있네요

저도 잘 모르지만 저기 데모소스보시고 한번 비교해보세요
bangbang (8,820 포인트) 님이 2014년 1월 7일 답변
액션바를 사용하는 소스라 조금..차이가 있네요 ㅠ
0 추천
제가 구글링 한 결과로는 엑티비티에서 oncreate()를 호출 하지 않았을대 나오는 에러라고 합니다.

확인 한번 해보세요~~!
ThisPlus (46,920 포인트) 님이 2014년 1월 7일 답변
Fragment 에서 Fragment를 호출합니다.
Activity 는 아니지요 .
그리고 FragmentActivity 를 상속받은 MainActivity 에서도, 모든 Fragment 에서 onCreate()를 호출하고 있습니다 ㅠ
어쨋든 관심가져주셔서 감사합니다^^
0 추천
  1. FragmentActivity 를 사용하셨으면 getSupportFragmentManager 를 사용해야 합니다. 확인하세요
  2. FragmentActivity 를 사용하셨으면 android.support.v4.app.Fragment 를 사용하셔야 합니다. 확인하세요
aucd29 (218,390 포인트) 님이 2014년 1월 7일 답변
제가 위 코드를 fragment 클래안에서 호출해서
문제가 된듯 합니다.
...