0

Android アプリでスプラッシュ スクリーンを作成していますが、Run() でアクティビティを開始しようとすると、アプリケーションのエラーが予期せず停止したことがわかります。startActivity の代わりに setContentView を使用すると、エラーも発生します。 startActivity の代わりに SplashScreen.this.startActivity を使用すると、エラーが発生します。ハンドラーの代わりに TimerTask を使用しようとしましたが、同じことが起こります。何が間違っていますか?

package name.appname;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;

public class SplashScreen extends Activity{
 @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        Handler handler = new Handler();
        handler.postDelayed(getRunnableStartApp(), 1500);
  }//public void onCreate(Bundle savedInstanceState)

 public Runnable getRunnableStartApp(){
    return new Runnable(){
        public void run(){
            startActivity(new Intent(SplashScreen.this, MainActivity.class));//when i quit this line, no error happens...
            finish();
        }//public void run()
    };//new Runnable()
 }//public Runnable getRunnableStartApp()
}//public class SplashScreen extends Activity

これはマニフェストです:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="name.appname"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:allowBackup="false" android:label="@string/app_name">
        <activity android:name="SplashScreen"
                  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> 

私はエラーをキャッチしました:android.content.ActivityNotFoundExceptionですが、なぜそれが起こるのかわかりません

4

2 に答える 2

1

マニフェスト ファイルに以下を追加します。MainActivity のエントリがありません

<activity android:name=".MainActivity"
          android:label="@string/app_name">
</activity>

これも変更

<activity android:name="name.appname.SplashScreen"
          android:label="@string/app_name">
<intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

注: スプラッシュ スクリーンを使用しても何も起こらないと考える人もいます。以下を確認してください

http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/

于 2013-06-13T13:45:59.963 に答える
0

Timertask 内で Runnable を使用します。
アプリ用の SplashScreen もあり、正常に動作します。

于 2013-06-13T13:47:05.897 に答える