Java 启动屏幕出现两次
我是Android编程新手。如果应用程序第一次使用共享首选项运行,我将尝试创建一个启动屏幕,加载一个配置文件页面。如果应用程序是第二次运行,我希望加载一个菜单页面。问题是,配置文件页面会打开,但会直接进入主菜单。此外,启动屏幕显示两次。有人能帮忙吗? 我的代码:Java 启动屏幕出现两次,java,android,android-intent,sharedpreferences,splash-screen,Java,Android,Android Intent,Sharedpreferences,Splash Screen,我是Android编程新手。如果应用程序第一次使用共享首选项运行,我将尝试创建一个启动屏幕,加载一个配置文件页面。如果应用程序是第二次运行,我希望加载一个菜单页面。问题是,配置文件页面会打开,但会直接进入主菜单。此外,启动屏幕显示两次。有人能帮忙吗? 我的代码: import android.content.Intent; import android.os.Handler; import android.support.v7.app.ActionBarActivity; imp
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
public class SplashActivity extends ActionBarActivity {
private static int SPLASH_TIME_OUT = 5000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
public void run() {
Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.getBoolean("isFirstRun", true);
if (isFirstRun) {
//show start activity
startActivity(new Intent(SplashActivity.this,ProfilePage.class));
getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit()
.putBoolean("isFirstRun", false).commit();
} else {
startActivity(new Intent(SplashActivity.this, MainMenu.class));
}
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
}
}
我对splash使用了与活动相同的方法,但我们不应该为splash加载单独的活动。。我们可以为启动器屏幕设置Windowbackground 因此,它将显示该背景,直到主视图完全加载为止
这是一个很好的教程,关于这个尝试在您的启动屏幕活动中添加这个代码片段:
@Override
protected void onResume() {
super.onResume();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// finish the splash activity so it can't be returned to
SplashScreen.this.finish();
}
}, 3000); // 3000 milliseconds
}
更改此代码`
Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.getBoolean("isFirstRun", true);`
到
以及下一行要编辑的共享\u pref
your_shared_pref.edit().putBoolean("isFirstRun",false).commit();
显示ProfilePage.class的代码。这个代码看起来不错。我认为您的个人资料页面活动有问题初始屏幕问题已解决,但个人资料页面立即跳转到下一屏幕。如何修复此问题?布尔值isFirstRun=your_shared_pref.getBoolean(“isFirstRun”,MODE_PRIVATE)出现错误;字符串布尔值不能应用于字符串int。是的,在那里进行null检查,它将第一次为null。请详细说明@inkedTechie。如果SharedReferences中的(isFirstRun!=null&&isFirstRun)getBoolean(字符串,布尔值)不能应用于(字符串,int)@inkedTechie
your_shared_pref.edit().putBoolean("isFirstRun",false).commit();