2011-11-17 2 views
-3

Android 호환성 패키지와 함께 제공되는 샘플을 사용해 보았습니다. 다음과 같은 오류와 FragmentTabsPager 충돌 :Android 호환성 패키지 샘플 FragmentTabsPager 충돌

11-17 19:00:27.414: E/AndroidRuntime(5401): FATAL EXCEPTION: main 
11-17 19:00:27.414: E/AndroidRuntime(5401): java.lang.NoClassDefFoundError: com.example.android.supportv4.app.LoaderCustomSupport$AppListFragment 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at com.example.android.supportv4.app.FragmentTabsPager.onCreate(FragmentTabsPager.java:60) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2633) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2685) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread.access$2300(ActivityThread.java:126) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2038) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.os.Looper.loop(Looper.java:123) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at android.app.ActivityThread.main(ActivityThread.java:4633) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at java.lang.reflect.Method.invoke(Method.java:521) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
11-17 19:00:27.414: E/AndroidRuntime(5401):  at dalvik.system.NativeStart.main(Native Method) 

은 내가 어떻게 해결합니까?

감사합니다.

UPD 누구에게 투표를하지 않는 이유를 알고 싶습니까? 나는 이것을 봤고 issue을 열었다. 아직 대답이 없습니다. 나는 내 질문에 공감할 만하다고 생각한다.

+0

LoaderCustomSupportAppListFragment를 ¹, 즉 심지어 클래스입니까? 나는 그것이 호환성 패키지에 있다고 생각하지 않는다. –

+0

이 클래스를 사용했던 코드와 코드에서 사용하는 방법을 게시해야합니다. –

+0

'getFragmentManager'보다는'getSupportFragmentManager'를 사용하고 있습니까? 언급했듯이 일부 코드 만 게시하면 충분한 정보가 아닌 투표를 받게됩니다. – PJL

답변

8

여기에 문제가 있습니까?
NoClassDefFoundError이 표시됩니다. oracle documentation

클래스에서

The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

또는 그것의 부분은 컴파일시에 사용할 수 있었던,하지만 런타임에 더 이상 사용할 수 : 그런 일이 않는 경우. Android 프로젝트가 특정 타겟 API 레벨로 설정되고 사용 가능한 클래스 및 메소드를 사용할 때 발생합니다. 그런 다음 안드로이드 버전이 낮은 장치 인 (해당 안드로이드 매니페스트에서 minSdk이 이것을 허용하도록 설정 됨 - 해당 샘플 프로젝트에서 기본적으로 4 임)을 사용하여 해당 프로젝트를 실행합니다.. 갑자기 이러한 구성 요소 중 일부가 사용 가능하지 않을 수 있습니다 ¹. 이 오류가 발생합니다.

문제를 해결하는 방법은 무엇입니까?
프로젝트 대상 SDK를 지원하려는 버전으로 변경하십시오. 그렇게하면 오류 표시자를보고 선택한 도구에서 문제를 컴파일해야합니다 (예 : 식. 2.2로 설정하면됩니다. 예를 들어이 클래스는 OnQueryTextListener, SearchViewArrayAdapter.addAll()(모두 API 11에서 소개 됨)을 사용한다는 것을 알 수 있습니다. API 레벨이 10 이하인 기기에서는 사용할 수 없습니다. 이 기능의 해결 방법을 구축하면 문제가 해결됩니다. 어쨌든, 이것이 샘플 코드라고 생각한다면,이 메소드들을 사용할 수 없다는 것을 명심해야합니다.

TL; DR은 :
샘플 프로젝트가 호환 패키지에없는 레벨 API (11)로부터의 기능을 이용한다. 11보다 낮은 버전을 실행하는 장치에서 실행될 때이 오류가 발생합니다.

이 경우 인터페이스에서 , OnQueryTextListener

+0

환상적인 답변입니다. 매우 설명적이고 유익한 정보. 질문의 상황을 고려하여 필요한 것보다 훨씬 자세하게 설명합니다. – AedonEtLIRA

관련 문제