Reputation: 27
I just added a splash screen to my application (which was working fine prior) and I'm wondering if anyone here is clever enough to spot the source of the issue I'm having. The app launches, the splash screen displays, then when it goes to load the primary layout (AppActivity.java / main.xml) the application force closes. : (
package com.mkyong.android;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class SplashScreen extends Activity {
private static final int SPLASH_TIME = 3 * 1000;// 3 seconds
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splashscreen);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashScreen.this,
AppActivity.class);
startActivity(intent);
SplashScreen.this.finish();
overridePendingTransition(R.anim.appear, R.anim.disappear);
}
}, SPLASH_TIME);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
}
}, SPLASH_TIME);
}
@Override
public void onBackPressed() {
this.finish();
super.onBackPressed();
}
}
LogCat:
03-02 13:32:41.936: E/Trace(2065): error opening trace file: No such file or directory (2)
03-02 13:32:42.116: D/dalvikvm(2065): GC_FOR_ALLOC freed 61K, 8% free 2404K/2608K, paused 51ms, total 54ms
03-02 13:32:42.166: I/dalvikvm-heap(2065): Grow heap (frag case) to 6.000MB for 3686416-byte allocation
03-02 13:32:42.316: D/dalvikvm(2065): GC_FOR_ALLOC freed <1K, 4% free 6003K/6212K, paused 144ms, total 144ms
03-02 13:32:42.477: D/dalvikvm(2065): GC_CONCURRENT freed <1K, 4% free 6003K/6212K, paused 8ms+6ms, total 167ms
03-02 13:32:43.216: I/Choreographer(2065): Skipped 30 frames! The application may be doing too much work on its main thread.
03-02 13:32:43.246: D/gralloc_goldfish(2065): Emulator without GPU emulation detected.
03-02 13:32:46.046: D/AndroidRuntime(2065): Shutting down VM
03-02 13:32:46.046: W/dalvikvm(2065): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
03-02 13:32:46.086: E/AndroidRuntime(2065): FATAL EXCEPTION: main
03-02 13:32:46.086: E/AndroidRuntime(2065): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.mkyong.android/com.mkyong.android.AppActivity}; have you declared this activity in your AndroidManifest.xml?
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1618)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.app.Activity.startActivityForResult(Activity.java:3370)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.app.Activity.startActivityForResult(Activity.java:3331)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.app.Activity.startActivity(Activity.java:3566)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.app.Activity.startActivity(Activity.java:3534)
03-02 13:32:46.086: E/AndroidRuntime(2065): at com.mkyong.android.SplashScreen$1.run(SplashScreen.java:24)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.os.Handler.handleCallback(Handler.java:725)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.os.Handler.dispatchMessage(Handler.java:92)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.os.Looper.loop(Looper.java:137)
03-02 13:32:46.086: E/AndroidRuntime(2065): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-02 13:32:46.086: E/AndroidRuntime(2065): at java.lang.reflect.Method.invokeNative(Native Method)
03-02 13:32:46.086: E/AndroidRuntime(2065): at java.lang.reflect.Method.invoke(Method.java:511)
03-02 13:32:46.086: E/AndroidRuntime(2065): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-02 13:32:46.086: E/AndroidRuntime(2065): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-02 13:32:46.086: E/AndroidRuntime(2065): at dalvik.system.NativeStart.main(Native Method)
03-02 13:32:50.336: I/Process(2065): Sending signal. PID: 2065 SIG: 9
Manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mkyong.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".SplashScreen"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity android:name=".main2"></activity>
<activity android:name=".home"></activity>
<activity android:name=".App2Activity"></activity>
<activity
android:label="@string/app_name"
android:name=".AppActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Upvotes: 0
Views: 1106
Reputation: 72673
Unable to find explicit activity class {com.mkyong.android/com.mkyong.android.AppActivity}; have you declared this activity in your AndroidManifest.xml?
Did you?
Change your Manifest to this:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mkyong.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".SplashScreen"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".main2" >
</activity>
<activity android:name=".home" >
</activity>
<activity android:name=".App2Activity" >
</activity>
<activity
android:name=".AppActivity"
android:label="@string/app_name" >
<!-- <intent-filter> -->
<!-- <action android:name="android.intent.action.MAIN" /> -->
<!-- <category android:name="android.intent.category.LAUNCHER" /> -->
<!-- </intent-filter> -->
</activity>
</application>
</manifest>
Do you really need 2 Launchers? I commented one out. (Also thanks to @Raghav, didn't notice the 2 <application>
tags )
Upvotes: 2
Reputation: 1113
Like Raghav Sood commented and Karan_Rana answered.
Android cant't open the Appactivity.class because Android doesnÄt know that it exists.
So you need to declare it in the Manifest. So Android knows that it exists and where it exists.
<activity android:name="com.mkyong.android/com.mkyong.android.AppActivity"></activity>
If you add this to your manifest in the application tag it should work. Or you will get another error because of another problem ;)
Upvotes: 0
Reputation: 2823
The exception was all too clear from the text itself..
have you declared this activity in your AndroidManifest.xml?
Please declare the AppActivity in you Manifest file. And use only one Application tag.
One android application holds only one Application tag
Upvotes: 0