我刚刚为我的应用程序添加了一个启动画面(之前工作正常),我想知道这里是否有人聪明地发现我遇到的问题的根源。应用程序启动,启动屏幕显示,然后当它加载主要布局(AppActivity.java / main.xml)时,应用程序强制关闭。 :(
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 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>
答案 0 :(得分:2)
Unable to find explicit activity class {com.mkyong.android/com.mkyong.android.AppActivity}; have you declared this activity in your AndroidManifest.xml?
你呢?
将您的清单更改为:
<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>
你真的需要2个发射器吗?我评论了一个。 (还要感谢@Raghav,没有注意到2 <application>
标签)
答案 1 :(得分:0)
案例中的例外情况太清楚了。
have you declared this activity in your AndroidManifest.xml?
请在Manifest文件中声明AppActivity。 并且只使用一个Application标记。
One android application holds only one Application tag
答案 2 :(得分:0)
就像Raghav Sood评论和Karan_Rana回答的那样。
Android无法打开Appactivity.class,因为Android并不知道它存在
所以你需要在Manifest中声明它。所以Android知道它存在以及存在的位置。
<activity android:name="com.mkyong.android/com.mkyong.android.AppActivity"></activity>
如果将其添加到应用程序标记中的清单中,它应该可以正常工作。或者由于另一个问题你会得到另一个错误;)