2013-06-04 89 views
1

我正在學習android編程,並且正在創建一個應用程序,該應用程序以啓動畫面開始並在此之後加載菜單類。問題是我得到這個例外類未找到例外Android

06-04 10:59:37.166: E/AndroidRuntime(926): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.em.example1.MENU" on path: /data/app/com.em.example1-1.apk 

我明白什麼是異常狀態,但我不明白爲什麼會這樣。在我的啓動畫面I類加載這樣

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 
    Thread timer = new Thread() { 
     public void run() { 
      try { 
       sleep(5000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } finally { 
       Intent mainApp = new Intent("com.em.example1.MENU"); 
       startActivity(mainApp); 

      } 
     } 
    }; 
    timer.start(); 

和菜單類菜單活動在清單文件中這樣定義

<activity 
     android:name="com.em.example1.MENU" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="com.em.example1.MENU" /> 

      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

,當我裝兩個按鈕和一個主要活動標籤一切工作正常。但是,當我改變它(在我的啓動畫面活動),所以它會加載菜單活動它不斷給我這個錯誤。

在此先感謝

+3

並且菜單類被命名爲MENU?請張貼該活動。 –

+0

http://developer.android.com/training/articles/perf-anr.html。在線程中使用sleep()是一個糟糕的設計。檢查鏈接 – Raghunandan

+0

http://stackoverflow.com/questions/16643177/changing-image-in-imageview-using-threads/16643267#16643267。爲啓動畫面。使用飛濺被認爲是邪惡的一些http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/ – Raghunandan

回答

0

事實證明我的錯誤是過於簡單的認識......我有Word菜單中的Android清單大寫的名稱,而不是隻在動作名稱。感謝您試圖幫助我的每個人

3

右鍵單擊您的項目轉到屬性。 Java構建路徑。選擇訂單導出選項卡。確保已選擇Android專用庫。如果你有引用庫項目。也爲圖書館項目做同樣的事情。清潔和構建。

+0

張貼這個作爲評論 – Raghunandan

2

也許你應該這樣做:

Intent mainApp = new Intent(this,com.em.example1.MENU.class); 
startActivity(mainApp); 
1

在清單中的東西˚F之前上市的是什麼呢?你正在尋找的是看到什麼應用程序包名稱是..

1

嘗試更改清單文件中的這一行。

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

而且還嘗試這個東西

嘗試去Project -> Properties -> Java Build Path -> Order & Export並確保Android的私家藏書都爲您的項目和所有正在使用的其他庫項目進行檢查。 事後清理所有項目,看看會發生什麼。

+0

所以我應該從包改爲動作意圖主?這是你的建議嗎? (我試圖理解它aswel,而不僅僅是拋棄它,並且很高興它的工作) –

2

您可以使用此代碼,我做了一些更改。它可能是幫助ü..

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 
    Thread timer = new Thread() { 
     public void run() { 
      try { 
       sleep(5000); 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } finally { 
       MENU.this.runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         Intent mainApp = new Intent(MENU.this,com.em.example1.MENU.class); 
         MENU.this.startActivity(mainApp); 
        } 
       }); 


      } 
     } 
    }; 
timer.start(); 
+0

如果你實現Thread或HandlerThread,確保你的UI線程在等待worker線程完成時不會阻塞 - 不要調用Thread .wait()或Thread.sleep()。不是一個好的設計。 http://developer.android.com/training/articles/perf-anr.html – Raghunandan

+0

沒有封閉的類型的實例菜單是可訪問的範圍這是我得到的錯誤 –