8

我正在運行Implementing Effective Navigation示例 - EffectiveNavigation.zip - 它演示了活動中帶有選項卡的一些滑動視圖。它在諸如4.2.2(API17)等更新的平臺上運行良好。對舊版平臺運行Android示例EffectiveNavigation時的ClassNotFindException

然後我想支持老平臺,如2.3.3(API10)也一樣,所以我降低的minSdkVersion爲4:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17"/> 

我做包括下列方式之一,支持庫:

  1. 經書:V4 Support Library Setup - without resources
  2. 或書:V7 Support Library Setup - with resources
  3. 或右鍵單擊項目 - > Android的工具 - >添加支承實t庫

無論如何,當我在2.3.3設備上運行應用程序時,這種模糊的運行時異常發生在下面的清單中。

在衝入之前,請先注意:我的問題是我無法在較舊的設備(如2.3.3)上運行它,但在較新的設備(如4.2.2)上運行良好。

我刪除,重新導入並重建並重新運行各種仿真器上的各種更改設置。它只是不運行在較舊的設備上(我的目的是使用選項卡和舊設備中的滑動視圖)。

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.effectivenavigation/com.example.android.effectivenavigation.MainActivity}: java.lang.ClassNotFoundException: com.example.android.effectivenavigation.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.android.effectivenavigation-1.apk] 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:130) 
    at android.app.ActivityThread.main(ActivityThread.java:3683) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:507) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassNotFoundException: com.example.android.effectivenavigation.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.android.effectivenavigation-1.apk] 
    at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:551) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
    at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1561) 
+0

剛剛在Android Studio中嘗試過。同樣的問題。 – RumburaK

回答

14

終於解決了,一天,一個晚上浪費了!

大部分的問題是,該應用程序還實施了一個ActionBar,並需要更多的遷移工作。我不得不改變一些其他位使用支持庫(V4和V7),主要是:

代碼更改在Java文件:

<< import android.app.ActionBar; 
<< import android.app.FragmentTransaction; 
--- 
>> import android.support.v7.app.ActionBar; 
>> import android.support.v4.app.FragmentTransaction; 


<< public class MainActivity extends FragmentActivity implements ActionBar.TabListener { 
--- 
>> public class MainActivity extends ActionBarActivity implements ActionBar.TabListener { 


<< final ActionBar actionBar = getActionBar(); 
--- 
>> final ActionBar actionBar = getSupportActionBar(); 

變化在AndroidManifest.xml:

<< <uses-sdk android:minSdkVersion="14" /> 
--- 
>> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/> 

<< android:theme="@android:style/Theme.Holo.Light.DarkActionBar"> 
--- 
>> android:theme="@style/Theme.AppCompat.Light.DarkActionBar"> 

這不是關於清理並重建項目,雖然你可以這樣做,如果它讓你感覺更好。

現在我在我的2.3.3 Android上有ActionBar和帶SwipeViews的Tabs。

谷歌非常重視這些backports,我必須使用它們,太糟糕了,沒有關於它的更清晰完整的文檔。除非我參考YouTube歷史記錄,否則我甚至無法自己找到該視頻 - 甚至不知道我是如何找到它的。

-1

你不能低於的Android阿比11 是蜂巢的標籤,使用刷卡。

所以清單文件看起來像

<uses-sdk 
     android:minSdkVersion="11" 
     android:targetSdkVersion="17" /> 
+0

是的,你可以。 http://developer.android.com/tools/support-library/features.html#v4 – RumburaK

相關問題