2011-11-17 76 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 只想知道爲什麼有人投票結束? 我GOOGLE了這個,發現這裏打開issue。還沒有答案。我認爲我的問題是合理的,值得關注。

+0

LoaderCustomSupportAppListFragment是,即使一個班?我不認爲它存在於兼容性軟件包中。 –

+0

你應該發佈一些代碼,你使用這個類的地方,以及你如何在你的代碼中使用它。 –

+0

您是否使用'getSupportFragmentManager',而不是'getFragmentManager'?如上所述,儘管發佈一些代碼,這就是爲什麼你被拒絕,沒有足夠的信息。 – PJL

回答

8

這裏有什麼問題?
您收到NoClassDefFoundError。什麼時候這種情況發生:

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

oracle documentation

你的類或部分是可利用的在編譯時間,但不再在運行時可用。當您的Android項目設置爲特定的目標API級別並使用其可用的類和方法時會發生這種情況。然後,您可以在Android版本較低的設備上運行該項目(假設您的minSdk已設置爲允許在您的AndroidManifest中使用此功能,該示例項目默認爲4)。突然之間,這些組件中的一些可能無法使用¹。你會得到這個錯誤。

如何解決?
將項目目標SDK更改爲您想要支持的版本。當你這樣做時,你應該看到錯誤標記,並在你選擇的工具中編譯問題,例如蝕。 如果將其設置爲2.2。例如,您將看到該課程使用OnQueryTextListener,SearchViewArrayAdapter.addAll()(均在API 11中引入)。這些在API等級10或更低的設備上不可用。 爲此功能構建解決方法應該解決問題。無論如何,考慮到這是示例代碼,您應該牢記這些方法不可用。

TL; DR:
示例項目使用來自11級不屬於在兼容性包API功能。在運行低於11的版本的設備上執行時,會引發此錯誤。

¹在這種情況下,一個接口,OnQueryTextListener

+0

夢幻般的答案。高度描述性和信息性。考慮到問題的情況,需要更多的細節。 – AedonEtLIRA