2014-01-07 7 views
0

В моем приложении открывается всплывающий экран, а затем MainActivity. Я написал следующий кодNoClassDefFoundError в SplashScreen

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", чтобы просто андроид: name = ". MainActivity" – dberm22

+0

@MartinCazares Какой баннер вы имеете в виду? и как я знаю, что это внутри банки? – 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) Кроме того, как я уже упоминал в своем комментарии, использование android:name=".MainActivity" вместо android:name="com.emy.healthytips.MainActivity" в xml является предпочтительным для устранения возможных непроверенных ошибок.