这是启动画面的一个例子,但由于我无法查看我的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>
答案 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操作。虽然这是允许的,但应该是出于特定原因。
但是,所有这些事情都不应该避免你的应用程序转到主要活动。您的主要活动代码可能有原因。