由于我没有进入下一个活动,因此我的启动画面出现问题

时间:2012-07-25 12:20:01

标签: android splash-screen

这是启动画面的一个例子,但由于我无法查看我的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>

3 个答案:

答案 0 :(得分:1)

我猜,你的问题是,你在开始新活动之前完成了你的活动。如果你在活动上调用finish(),它将被销毁,因此startActivity()将不再被调用(或者如果它将被调用,它将不再获得有效的上下文)。因此,尝试在run方法的末尾移动finish()方法,以解决问题。

答案 1 :(得分:0)

实施Flash Screen的另一种非常简短,简单且有效的方式如下:

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方法。

答案 2 :(得分:0)

您应该注意以下几点: 1.不鼓励使用stop()及其使用的位置。除了被弃用之外,它还会为您提供UnsupportedOperationExcecption。 2.您的MediaPlayer是否正确初始化而没有任何错误?检查日志。 3.你在onPause()方法中使用finish()的原因是什么?不推荐。 4.您正在为您的两项活动分配MAIN操作。虽然这是允许的,但应该是出于特定原因。

但是,所有这些事情都不应该避免你的应用程序转到主要活动。您的主要活动代码可能有原因。