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

Fragment와 관련한 질문 입니다.

0 추천

 

Fragment를 이용하여 이것 저것 Sample을 만들어보고 있습니다.

 

그런데, 진행을 하면서 한가지 도저히 극복을 못 하는 문제가 있어서 이렇게 문의 드립니다.

 

현재 문제는 이렇습니다.

 

layout xml에서 <fragment>를 이용하여 하나의 tag를 만듭니다.

그리고 android:name 또는 class를 kr.co.sample.NationalListFragment 라고 정의를 하였습니다.

프로그램에서 NationalListFragment()라는 Class를 만들고 Fragment를 Extention을 받았습니다.

이때 import를 android.support.v4.app.Fragment;로 정의하고 Run을 시켰더니, 다음과 같은 오류가 발생하였습니다.

07-01 01:20:26.138: E/AndroidRuntime(13830): Caused by: java.lang.ClassCastException: kr.co.sample.map.NationalListFragment cannot be cast to android.app.Fragment

import한 fragment type이 달라서 나오는 문제라서 import 문장을 android.app.Fragment로 수정을 하였더니, 더 이상 오류가 발생을 안 했습니다.

여기서 질문이 두가지 있습니다.

다른 예제를 보면, android.support.v4.app.Fragment로 잘 활용을 하는데, 왜 저는 xml에 정의한 <fragment>가 android.app.Fragment로만 사용이 가능할까요?
제가 무슨 설정을 잘못한것인지? 아니면 다른 특별한 방법이 있는 것인지?

두번째 질문은 android.app.Fragment로 정의하여 사용을 한다고 쳤을 때, <android.support.v4.view.ViewPager> Widget를 사용하고자 하는 경우는 어떻게 대처를 해야 할까요?
Sample을 만들어봤더니, android.app.Fragment와 android.support.v4.view.ViewPager와는 호환이 안되더라고요?

혹시 해당 질문에 답변을 좀 설명해줄 수 있을까요?(제 질문이 혹시 너무 어렵지 않았나? 걱정이 됩니다.)
 

컴천재 (2,580 포인트) 님이 2013년 7월 1일 질문

2개의 답변

+2 추천
 
채택된 답변

NationalListFragment 가  android.support.v4.app.Fragment 를 상속받았는지 확인하시고

레이아웃 xml 을 사용하고 있는 Activity가 FragmentActivity인지 확인하세요.

b22n (22,940 포인트) 님이 2013년 7월 1일 답변
컴천재님이 2013년 7월 1일 채택됨
FragmentActivity를 상속 받으니 정상 동작 하였습니다.
감사합니다.

그런데, 궁극적으로 제가 원했던 것은 ViewPager를 android.view.ViewPager로 상속 받고 싶은 것 이었는데, android.view에는 ViewPager가 지원되지 않고 있더군요. ㅠㅠ
android.support.v4.app.Fragment 와 android.support.v4.view.ViewPager를 사용하는 편이 낮은 버전의 os에서도 지원가능하기 때문에 더 유용합니다.
+3 추천
fragment 클래스의 종류가 2가지 입니다. 하나는 v4 에 있는 fragment  이고 하나는 sdk 12 이후 부터 존재하는 fragment  입니다.

 

전자는 sdk 13 이전에서도 사용할 수 있게 하기 위해서 별도로 만들어진 lib 개념이고 후자는 sdk 13 부터 지원하는 부분 입니다. v4 를 쓰려면 v4 로 사용해야 되는데 현재 혼재되어 있는 것 같습니다. xml 에서 v4 를 사용하기 위해서는 custome layout  과 같이 fragmeent 의 전체 경로를 모두 적어주어야 합니다.

예로 다음과 같습니다.

android.support.v4.app.Fragment
aucd29 (218,390 포인트) 님이 2013년 7월 1일 답변
일단, FragmentActivity를 extention을 받아야 하는 것 이더라고요.
감사합니다.

그런데, 궁극적으로 제가 원했던 것은 ViewPager를 android.view.ViewPager로 상속 받고 싶은 것 이었는데, android.view에는 ViewPager가 지원되지 않고 있더군요. ㅠㅠ
v4 에 ViewPager 를 사용하세요
...