2014-05-13 1 views
15
내가 14

getChildFragmentManager() 지원 라이브러리

getChildFragmentManager()에 최소 SDK 세트, API 레벨 19에 대해 컴파일 된 응용 프로그램에 getChildFragmentManager()을 사용하고

은 API 수준에서 실행하는 장치 있도록 API (17)에 도입 된 14, 15 또는 16은 메서드가 호출 될 때 NoSuchMethodError을 반환합니다.

이 문제와 관련된 다른 모든 StackOverflow 질문을 살펴 보았지만이 질문에 대한 답변이없는 것 같습니다. getChildFragmentManager() 메소드를 API 레벨 17 이전에서 작동 시키려면 어떤 방법이 있습니까? 그렇다면 어떻게?

이 방법은 v4 또는 v13 지원 라이브러리에 포함되어 있지 않은 것 같습니다. v4 및 v13 지원 라이브러리를 모두 사용하여 깨끗한 빌드를 시도했지만 문제가 해결되지 않은 것 같습니다.

답변

17

getChildFragmentManager() 메소드가 API 레벨 17 이전의 디바이스에서 작동하도록하는 방법은 무엇입니까? 그렇다면 어떻게?

Android 지원 패키지 (android-support-v4.jar, android.support.v4.app.Fragment)의 조각 백 포트를 사용하십시오.

이 방법은 v4 또는 v13 지원 라이브러리에 포함되어 있지 않은 것 같습니다.

예, 그것은 FragmentActivity에, 당신은 조각이 백 포트를 사용하기 위해 사용해야하는 Activity 기본 클래스입니다.

해당 프래그먼트의 하위 조각을 관리하기 위해 백 포트의 Fragment 클래스에 있습니다.

v4 및 v13 지원 라이브러리를 모두 사용하여 깨끗한 빌드를 시도했지만 문제가 해결되지 않은 것 같습니다.

은 어느 당신은 FragmentActivity Fragment 백 포트를 변경하지 않았거나 지원 라이브러리 JAR 파일이 오래된이다. Here is a sample project FragmentActivity Fragment 백 포트 및 해당 getChildFragmentManager()의 사용을 보여줍니다.

+10

['getChildFragmentManager()'(https://developer.android.com/reference/android/support/v4/app/Fragment.html#getChildFragmentManager())가'FragmentActivity'가 아닌'Fragment'에 있습니다. –

+1

@MarkCarter : 좋은 캐치 - 대답을 편집했습니다. 감사! – CommonsWare

0

대신 SupportFragmentManager을 시도 할 수 :

yourFragment = (YourFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.playListFragment)