2014-01-07 39 views
0

在我的應用程序中,它會打開一個閃屏然後MainActivity。我寫了下面的代碼SplashScreen中的NoClassDefFoundError

SplashActivity.java

public class SplashActivity extends Activity { 

    private final int SPLASH_DISPLAY_LENGHT = 2000; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       /* Create an Intent that will start the Menu-Activity. */ 
       Intent intent = new Intent(SplashActivity.this, MainActivity.class); 
       startActivity(intent); 
       finish(); 
      } 
     }, SPLASH_DISPLAY_LENGHT); 
    } 
} 

MainActiviy.java

here

我加入這兩個MainActivity和SplashActivity體現如下:

<activity 
     android:name="com.emy.healthytips.SplashActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:configChanges="keyboardHidden|orientation|screenSize" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name="com.emy.healthytips.MainActivity" 
     android:label="@string/app_name" 
     android:configChanges="keyboardHidden|orientation|screenSize" 
     android:launchMode="singleTop"> 
     <meta-data 
      android:name="android.app.default_searchable" 
      android:value=".MainActivity" /> 

     <meta-data 
      android:name="android.app.searchable" 
      android:resource="@xml/searchable" /> 

     <intent-filter> 
      <action android:name="android.intent.action.SEARCH" /> 
     </intent-filter> 

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

      <data 
       android:host="com.emy.healthytips.MainActivity" 
       android:scheme="oauth" /> 
     </intent-filter> 
    </activity> 

但它給了我以下的Exce ption

FATAL EXCEPTION: main 
java.lang.NoClassDefFoundError: com.emy.healthytips.MainActivity 
at com.emy.healthytips.SplashActivity$1.run(SplashActivity.java:20) 

在這一行

Intent intent = new Intent(SplashActivity.this, MainActivity.class); 

我該如何解決這個問題?希望任何人都可以幫助我。 在此先感謝。

+0

是罐子裏面的主要活動嗎? –

+1

我認爲在xml中使用相對類名更好。嘗試改變這一行android:name =「com.emy.healthytips.MainActivity」只是android:name =「。MainActivity」 – dberm22

+0

@MartinCazares你的意思是哪個jar?以及我如何知道它在罐子裏面? – Eman87

回答

0

多的事情......

1)你正在做它的方式擊敗了啓動畫面的目的。當應用程序加載到後臺時,初始屏幕應該爲用戶提供一張漂亮的圖片。你所做的只是增加額外的2秒延遲。看看這篇文章:Android SplashScreen

2)很多人說這種方法不適用於< 4.0。不知道爲什麼,只是擡起頭(https://stackoverflow.com/a/5486970/2066079

3)代替:

startActivity(intent); 
finish(); 

你應該使用:

SplashActivity.this.startActivity(intent); 
SplashActivity.this.finish(); 

你想用的startActivity()活動的版本,而不是Runnable的。這可能是不必要的,但如果它沒有幫助,至少這是一個好習慣。

4)另外,就像我在我的評論中提到的,在xml中使用android:name=".MainActivity"而不是android:name="com.emy.healthytips.MainActivity"以消除可能的未經檢查的拼寫錯誤。