2011-11-21 82 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(); 
      ...... 

}