2011-11-21 49 views
0

我收到一個找不到活動的異常。我開始一個SplashScreen活動,然後將控件傳遞給MainActivity未找到Android活動錯誤?

這裏是我的清單文件

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="se.copernicus.activity" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:minSdkVersion="5" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 

    <application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" > 

     <activity 
      android:label="@string/app_name" 
      android:name=".SplashScreenActivity" > 
      <intent-filter > 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="se.copernicus.activity.MainActivity" > 
    </activity> 

     <activity 
      android:label="@string/second_activity" 
      android:name="se.copernicus.activity.Secondactivity" 
      android:theme="@android:style/Theme.NoTitleBar" > 
     </activity> 
    </application> 
</manifest> 

這是我開始在第一個啓動畫面活動。

public class SplashScreenActivity extends Activity { 
protected boolean _active = true; 
protected int _splashTime = 5000; 
Intent intent = new Intent("se.copernicus.activity.MainActivity"); 
Thread splashTread = null; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    splashTread = new Thread() { 
     @Override 
     public void run() { 
      try { 
       int waited = 0; 
       Log.i("Coming here 1","Coming here 1"); 
       while(_active && (waited < _splashTime)) { 
        sleep(50); 
        Log.i("Coming here 2","Coming here 2"); 
        if(_active) { 
         waited += 50; 
         Log.i("Coming here 3","Coming here 3"); 
        } 
       } 
      } catch(InterruptedException e) { 
       // do nothing 
      } finally { 
       finish(); 
       Log.i("Coming here 4","Coming here 4"); 
       startActivity(intent); 

       Log.i("Coming here 5","Coming here 5"); 

       if(splashTread!= null){ 
        splashTread.stop(); 
        splashTread=null; 
       } 
      } 
     } 
    }; 
    splashTread.start(); 
} 
@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     _active = false; 
    } 
    return true; 
} 

}

我已經聲明進行錯誤檢查清單中的雙重活性,包名了。然而,這個錯誤顯示出來。我在哪裏犯錯誤?

錯誤日誌:在menifest應用標籤

E/AndroidRuntime(340): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=se.copernicus.activity.MainActivity } 
E/AndroidRuntime(340): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408) 
E/AndroidRuntime(340): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
E/AndroidRuntime(340): at android.app.Activity.startActivityForResult(Activity.java:2827) 
E/AndroidRuntime(340): at android.app.Activity.startActivity(Activity.java:2933) 
E/AndroidRuntime(340): at se.copernicus.activity.SplashScreenActivity$1.run(SplashScreenActivity.java:41) 
+2

PLZ提供您的錯誤日誌... – Ratan

+1

@Vinoth:還滿清單文件。 –

+0

嗨kool4u,Adil Soomro。我剛剛添加了錯誤日誌 – Vinoth

回答

2

Intent(String)文檔看看:

public Intent (String action)

action Intent操作,例如ACTION_VIEW。


現在來看看這塊你的代碼:

Intent intent = new Intent("se.copernicus.activity.MainActivity"); 

它說,你想用行動"se.copernicus.activity.MainActivity"開始活動。但你不想那樣。你想開始類se.copernicus.activity.MainActivity的活動。這是兩件不同的事情!


現在看錯誤消息:

No Activity found to handle Intent { act=se.copernicus.activity.MainActivity } 

通知之act部分錯誤信息,它代表Action。這意味着Android無法解決任何行動"se.copernicus.activity.MainActivity"。這隻能證明我以前的觀點。


不是把你的類名作爲行動的,你需要用空的動作值創建正確Intent,但正確的Activity類名(使用正確的組件ID更精確)。所以,你確實需要使用其他Intent構造函數來創建Intent

Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); 
+0

精彩的解釋... 讓我更好地理解了Intent。 謝謝inazaruk! – Vinoth

+0

我不明白「行爲」是什麼意思的錯誤..感謝清除這個! – Vinoth

0

要麼設置包名或閃屏活動

0

呃給完全合格的活動名稱。試着像這樣做。

Intent intent = new Intent(SplashScreenActivity.this, MainActivity.class); 
startActivity(intent); 
+0

我試過那個Sver,它也沒有工作。我得到一個錯誤。 – Vinoth

1

只是完成()烏拉圭回合啓動活動後您的活動......

finally { 

      Log.i("Coming here 4","Coming here 4"); 
      startActivity(intent); 
      finish(); 
      ...... 

}