3

這是一個後續問題my question earlier this dayAndroid:3.0應用程序崩潰應該是向後兼容

我已經安裝了兼容包並重新啓動了Eclipse。然後,我創建了這樣一個活動,使用布倫德爾代碼:

public class EntryActivitiy extends Activity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.about); 

     int b = Integer.parseInt(Build.VERSION.SDK); 
     if (b >= Build.VERSION_CODES.HONEYCOMB) 
     { 
      Log.i(getString(R.string.app_name), "Found A Tablet Running Honeycomb or newer"); 
      //nothing else in here yet 
     } 
     else 
     { 
      this.startActivity(new Intent(this, Main.class)); 
     } 
    } 

} 

我的清單包含:

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

    <supports-screens android:smallScreens="false" 
     android:normalScreens="true" 
     android:largeScreens="true" 
     android:xlargeScreens="true"/> 

以及

<activity android:name="EntryActivity" 
     android:label="@string/app_name" 
     android:noHistory="true">   

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 

在項目設置,我已經設置了構建目標爲3.0,否則我會得到一個「HONEYCOMB無法解決或不是一個領域」的錯誤。

現在,如果我在我的2.2 AVD運行,應用程序崩潰是這樣的:

05-27 14:13:54.270: ERROR/AndroidRuntime(329): FATAL EXCEPTION: main 
05-27 14:13:54.270: ERROR/AndroidRuntime(329): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{/myPackage.EntryActivity}: java.lang.ClassNotFoundException: myPackage.EntryActivity in loader dalvik.system.PathClassLoader[/data/app/myPackage-1.apk] 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.os.Looper.loop(Looper.java:123) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at dalvik.system.NativeStart.main(Native Method) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329): Caused by: java.lang.ClassNotFoundException: myPackage.EntryActivity in loader dalvik.system.PathClassLoader[/data/app/myPackage-1.apk] 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
05-27 14:13:54.270: ERROR/AndroidRuntime(329):  ... 11 more 

如果試圖在我的2.3的手機,但得到了一些奇怪的屏幕閃爍和「HDMI斷開」等很奇怪LogCat中的消息。但我不想重複,所以我不能提供確切的信息。

我在做什麼錯?

親切的問候, 水母

編輯:

我換回到我的老主要活動和它工作得很好。此外,我評論了所有與HC相關的代碼,它仍然會崩潰。我也嘗試將另一個Activity設置爲主要,並且也起作用。 :/

回答

1

編輯

您的活動類實際上是拼錯!

改變它在你的清單或更改類名:

public class EntryActivitiy extends // here spellcheck 

原來的答案

您需要在您的清單您的活動的類名前一段:

<activity android:name=".EntryActivity" 
    android:label="@string/app_name" 
    android:noHistory="true"> 

做一個項目>清潔,它應該在此之後自動重建

那麼你需要檢查你的清單,以確保你的包是正確的:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.something.something" 
.... 

我也想卸載掉後,這個仿真器,只是爲了安全起見,模擬器>設置>應用程序>標準卸載

+0

哦,不,認真......?當你應該回家的時候就會發生這種情況,但是卻試圖讓一些東西起作用。 ^^非常感謝你,這真的很難找到! :) – jellyfish 2011-05-30 07:40:14

1

什麼是EntryActivity的包?它在myPackage中嗎?

+0

是它是myPackage – jellyfish 2011-05-27 14:46:00

+0

你檢查過該文件是否在/data/app/myPackage-1.apk?你做過重建和部署嗎? – Kaj 2011-05-27 14:53:14

+0

我做了重建,是的。我在哪裏可以找到/ data/app?我只有/ res,/ src等。 – jellyfish 2011-05-27 14:57:35

1

你需要在你的清單活動的類名前放置一個時期:

<activity android:name=".EntryActivity" 
+0

糾正它,但仍然得到了同樣的崩潰 – jellyfish 2011-05-27 14:46:19

+1

我想說你錯過了這段時間。你做了一個項目>清潔,它應該在此之後自動重建? – Blundell 2011-05-27 15:10:11

+0

我做到了。如果重新啓動Eclipse,我將嘗試嘗試。但我現在必須離開,所以今天我不能嘗試。至少我經過一些測試後知道它不是Honeycomb的東西。 ;) – jellyfish 2011-05-27 15:14:26