0

これはスプラッシュ画面の例ですが、MainActivityクラスを表示できず、問題を認識できなかったため、問題に直面しています。アクションとカテゴリ名も変更してマニフェストファイルで試しましたが、できませんでした。それに解決することができます。

基本的に私Intent intent = new Intent();も変更しましたが、それでも同じことが続きます。

    public class SplashActivity extends Activity
    {

        MediaPlayer player;

        @Override
        protected void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);

            player = MediaPlayer.create(SplashActivity.this, R.raw.splash);
            player.start();
            Thread timer = new Thread() 
            {

                @Override
                public void run() 
                {
                    try
                    {               
                        sleep(4000);

                    }catch(InterruptedException e)
                    {
                        e.printStackTrace();
                    }

                        finish();
                        Intent intent = new Intent();
                        intent.setClass(SplashActivity.this, MainActivity.class);
                        startActivity(intent);
                        stop();




                }
            };
            timer.start();

        }

        @Override
        protected void onPause() 
        {
            super.onPause();
            player.release();
            finish();
        }


    }

====>そしてこれが私のマニフェストファイルです-

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

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

    <application
        android:icon="@drawable/android_splash"
        android:label="@string/app_name" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity android:name=".SplashActivity"
                  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>
4

3 に答える 3

1

あなたの問題は、新しい活動を始める前に活動を終えることだと思います。アクティビティを呼び出すfinish()と、そのアクティビティは破棄されるため、startActivity()は呼び出されなくなります(または、呼び出されると、有効なコンテキストを取得できなくなります)。したがってrun、問題を解決するために、メソッドの最後にfinish()メソッドを移動してみてください。

于 2012-07-25T12:25:14.620 に答える
0

Flash Screenを実装するもう1つの非常に短く、シンプルで効果的な方法は次のとおりです。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Handler handler=new Handler();
        Runnable gotoMain=new Runnable() {
        public void run() 
        {
          startActivity(new Intent(SplashActivity.this, MainActivity.class));
          finish();
        }
      };
      handler.postDelayed(gotoMain, 4000);
    }  

OnCreateメソッドをこれに置き換えるだけです。

于 2012-07-25T12:34:50.477 に答える
0

注意すべき点がいくつかあります。 1. stop() の使用と使用場所は推奨されません。廃止されるだけでなく、UnsupportedOperationExcecption も発生します。2. MediaPlayer はエラーなく正しく初期化されていますか? ログを確認します。3. onPause() メソッドで finish() を使用している理由は何ですか? お勧めしません。4. 両方のアクティビティに MAIN アクションを割り当てています。許可されていますが、特定の理由がある必要があります。

ただし、これらすべてによって、アプリケーションがメイン アクティビティに移行することを避けるべきではありません。メインのアクティビティ コードに理由がある可能性があります。

于 2012-07-25T13:15:44.017 に答える