총 게시물 914건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

TabActivity 대신 FragmentActivity를 사용하려고하는데.. TabHost의 제약사항이 무엇이 있나요...?

글쓴이 : 호군 날짜 : 2012-07-30 (월) 14:51 조회 : 21981
글주소 : http://www.androidside.com/B49_best/1118
 
  무신사 코드
무신사 코드 판매처,100%정품, 무료배송, 2~10%추가할인, 회원가입쿠폰지급
store.musinsa.com
  동명 파워 코드
AC POWER CORD전문취급, 상품문의, 국외/국내용 제품을 공급하는 업체.
acpowercord.co.kr
  (주)파이터코리아
고체에어로졸 자동소화장치, 소공간 자동소화장치, FirePro, KFI, UL인증
www.fighterkorea.com
신청하기


안녕하세요~

TabActivity는 3.0 이후로 사용이 금지되어서 FragmentActivity를 추천하던데..
안드로이드 개발문서를 보면 탭이 변경 될 때 마다, FragmentManager를 이용해서 Fragment를 추가를 해서 화면에 보여주더군요.. TabActivity를 사용했을 때 보다 불필요한 코드들이 들어가서.. 코드가 조금 지저분해진 것 같아 좋은 건지 잘 모르겠더군요.. 

그래서 차라리 직접 레이아웃을 작성해서 Tab과 같은 효과를 주는 것이 나은건지 여러 개발자분들의 의견도 듣고 싶습니다.
아.. 메인 질문은 TabHost를 사용했을 때 제약사항이 있으면 좀 알려주세요~




호군 님의 개발 Q&A FAQ 최신글 [더보기]


질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

수아 2012-07-30 (월) 16:17 추천추천 1 반대 0
ㅎㅎ 멀요.. 근데 제 말을 잘 못 이해하셨나봐요..
제 말은 탭액티비티나 그룹액티비티같은거 이용하시지 말라는거예요..
다 불편하기 짝이 없고 확장가능성이 정말 적어요..
제 말은 님이 만일 하단에 탭바(버튼들이 몇개 있는)를 구현하려 하신다면 매 탭에 넣으려고 했던 모든 액티비티하단에 그러한 버튼 그룹을 하나하나 이미지뷰들로 구성해서 마치 탭액티비티처럼 구현을 하시라는거예요..

제가 말주변이 없어서리 이해를 잘 못하시는거 같으신데 쌤플소스 하나 보여드리죠..


 <!-- 공통부분 하단 탭들 -->


    <!-- 탭 배경 -->

    <ImageView
        android:id="@+id/imv_mainTabBg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!--  첫 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!-- 두번째 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!-- 세번째 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!-- 네번째 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!-- 다섯번째 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

이러한 코드를 5개의 액티비티의 레이아웃들에 추가하고 이 버튼들을 맨 하단에 그리기 해서, 또 모든 액티비티들에서 이 버튼들에 대한 이벤트정의를 해서 이용하시라는겁니다.
그게 젤 편하더군요.. 임의로 변경가능하구 좋아요..
풋쳐핸졉 2012-07-30 (월) 14:53
음.. 아직까지는 앱제작 할때 대부분 targetSDK를 2.2로 하고 있기 때문에
탭액티비티 사용한 앱이 오작동하거나 안된다는 컴플레인은 안들어오고 있습니다만..

3.0이후버전 3.0 미만 버전을 따로 제작할게 아니시라면 그냥 2.2로 하시고 tabActivity 사용하셔도
무방할 것 같은데요;

댓글주소 추천 0 반대 0
     
     
호군 2012-07-30 (월) 15:04
답변 감사합니다.

아직 모든 안드로이드폰에서 TabActivity가 지원되는지는 잘 모르겠지만, 어떤 분의 블로그에서 상위버전 SDK로 컴파일 할 때 오류가 발생했다고 하더라구요.. 이 부분은 제가 테스트를 해보지 않아서 확신 할 순 없지만요..무엇보다 공식적으로 사용 중지된 클래스를 사용하기도 조금 꺼려지구요...ㅠㅠ
댓글주소 추천 0 반대 0
OSKIller 2012-07-30 (월) 15:18
빌드타겟이 3.2(API12)이상이라면 문제가 발생할수 있습니다.
API11까지는 문제 없이 사용해도 상관 없습니다.
하위버전으로 빌드된apk를 ics에서 돌린다고해서 탭에 문제가 생기는경우는 못본거 같습니다.

프레그먼트를 이용하여 화면을 구성하면 처음에는 보기 힘들지만 
익숙해지면 그것도 나름 보기 편합니다.
댓글주소 추천 0 반대 0
     
     
호군 2012-07-30 (월) 15:47
답변 감사합니다.

현재 최소 SDK 버전은 API8이고, 타겟 SDK 버전은 15입니다.
킬러님 말씀대로 Fragment를 처음 사용하니 조금 많이 어색해서 더 꺼려지마음이 안들수가 없더군요..
아마도 Tab을 클릭 했을 때, FragmentManager에서 Fragment를 add를 했는데...
TabHost의 "android:id/realtabcontent" 의 레이아웃에 Fragment가 보여지니 더 그런 것 같습니다.
혹시, FragmentManager가 TabHost를 위해서 만들어진게 아닐텐데... 어떻게 그 레이아웃에 보여지 아시나요..?

댓글주소 추천 0 반대 0
수아 2012-07-30 (월) 15:46
제가 한 몇년간 개발해보니까요..
Tab이나 Group 이나 불편한게 많아요..
머 손대야 할곳.. 생각해야 할곳도 넘 많구요..
메모리문제에서도 오류가 많이 나요.. 그리고 디자인상의 요구에 맞추기위한 카스터마이징도 쉽지가 않구요..
걍.. 이미지뷰나 프레임레이아웃을 가지고 탭액티비티나 그룹액티비티를 구현하는게 젤 좋습니다.
사실 품도 더 적게 들거든요...
아마 그래서 구글행님들도 새버전들에서 그것들 다 deprecate시키지 않았겠나요..
댓글주소 추천 0 반대 0
     
     
안사지킴이 2012-07-30 (월) 15:46
축하드립니다. ;)
수아님은 럭키라이팅에 당첨되어 5 포인트 지급되었습니다.
     
     
수아 2012-07-30 (월) 15:49
그러니 이 방법을 강추합니다
님 캐릭터처럼 걍 쭉 밀고 나가세요..용감히.ㅎㅎ
댓글주소 추천 0 반대 0
          
          
안사지킴이 2012-07-30 (월) 15:49
축하드립니다. ;)
수아님은 럭키라이팅에 당첨되어 1 포인트 지급되었습니다.
     
     
호군 2012-07-30 (월) 16:05
안드로이드 문서에서 TabActivity대신 FragmentActivity를 구현한 소스를 보면,
코드파일은 늘어나지 않고, 몇 십줄의 코드를 더 작성하기는 합니다. 물론, 몇몇 부분이 이해는 안가지만요..
그리고 커스터마이징하기 안좋은건 TabHost를 사용하면서 어쩔 수 없는 문제가 아닐런지..ㅠㅠ
TabActivity도 한번 사용해봐서 자세히는 모릅니다;; 그래서 질문을 올리게 된거구요...ㅎㅎ;;

액티비티그룹은 사용을 해보지 않아서 잘 모르겠지만.. 수아님이 구현하기 좋다니..커스터마이징이 등에 편한겠죠 ㅎㅎ; 하지만  deprecate는 더 이상 지원하지 않는다는 것이고... 상위 sdk에서 빌드 오류가 났다는 분도 있어서 추후에 동작하지 않을 수 있다는 생각도 들어 사용이 꺼려지는 것은 어쩔 수 없군요... 

수아님 답변을 계속 해주셔서 감사합니다.


댓글주소 추천 0 반대 0
          
          
안사지킴이 2012-07-30 (월) 16:05
죄송합니다. ;)
호군님은 안사지킴이의 심술에 의해 -4 포인트 차감되었습니다.
          
          
수아 2012-07-30 (월) 16:17
베플로 선택된 게시물입니다.
ㅎㅎ 멀요.. 근데 제 말을 잘 못 이해하셨나봐요..
제 말은 탭액티비티나 그룹액티비티같은거 이용하시지 말라는거예요..
다 불편하기 짝이 없고 확장가능성이 정말 적어요..
제 말은 님이 만일 하단에 탭바(버튼들이 몇개 있는)를 구현하려 하신다면 매 탭에 넣으려고 했던 모든 액티비티하단에 그러한 버튼 그룹을 하나하나 이미지뷰들로 구성해서 마치 탭액티비티처럼 구현을 하시라는거예요..

제가 말주변이 없어서리 이해를 잘 못하시는거 같으신데 쌤플소스 하나 보여드리죠..


 <!-- 공통부분 하단 탭들 -->


    <!-- 탭 배경 -->

    <ImageView
        android:id="@+id/imv_mainTabBg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!--  첫 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!-- 두번째 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!-- 세번째 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!-- 네번째 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

    <!-- 다섯번째 액티비티 -->

    <ImageView
        android:id="@+id/imv_mainTabBtn5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ImageView>

이러한 코드를 5개의 액티비티의 레이아웃들에 추가하고 이 버튼들을 맨 하단에 그리기 해서, 또 모든 액티비티들에서 이 버튼들에 대한 이벤트정의를 해서 이용하시라는겁니다.
그게 젤 편하더군요.. 임의로 변경가능하구 좋아요..
댓글주소 추천 1 반대 0
               
               
수아 2012-07-30 (월) 16:18
물론 한개의 수정요구에 *5의 품이 드는건 사실입니다만...
그래두 프로젝트야 우선 고객의 요구에 능동적인게 젤이죠..

댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기