2014-01-07 3 views
0

내 앱에서 시작 화면을 연 다음 MainActivity를 엽니 다. 나는 MainActiviy.javaNoClassDefFoundError in SplashScreen

here

다음 코드

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); 
    } 
} 

을 썼다 그리고 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

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

가 어떻게이 문제를 해결할 수있는이 라인에서

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

? 누군가가 나를 도울 수 있기를 바랍니다. 미리 감사드립니다. 당신이 그 일을하는 방법은 시작 화면의 목적을 패배

1)

+0

은 병 내부의 주요 활동입니까? –

+1

XML에서 상대 클래스 이름을 사용하는 것이 더 좋습니다. 이 라인을 android : name = "com.emy.healthytips.MainActivity"로 변경해보십시오. android : name = ". MainActivity" – dberm22

+0

@MartinCazares 어느 항아리입니까? 내가 그 병 속에 있다는 것을 어떻게 알았습니까? – Eman87

답변

0

여러 가지 .... 스플래시 화면은 앱이 백그라운드에서로드되는 동안 사용자에게 예쁜 그림을 제공합니다. 당신이하는 일은 여분의 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="com.emy.healthytips.MainActivity" 대신 android:name=".MainActivity"을 xml에 사용하면 확인되지 않은 오타 오류를 없앨 수 있습니다.