我是Android编程新手。如果应用程序首次使用共享首选项运行,我正在尝试制作一个加载配置文件页面的启动画面。如果该应用程序第二次运行,我希望加载一个菜单页面。问题是配置文件页面打开但直接进入主菜单。此外,启动画面出现两次。有人可以帮忙吗? 我的代码:
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);
}
}
答案 0 :(得分:0)
我使用相同的方式将splash作为一个活动但我们不应该为splash添加单独的活动..我们可以为我们的启动器屏幕设置 Windowbackground 。
因此它将显示该背景,直到我们的主视图完全加载。
这是关于此https://www.bignerdranch.com/blog/splash-screens-the-right-way/
的精彩教程答案 1 :(得分:0)
尝试在启动画面活动中添加此代码段:
@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
}
答案 2 :(得分:0)
更改此代码`
Boolean isFirstRun = getSharedPreferences("PREFERENCE", MODE_PRIVATE)
.getBoolean("isFirstRun", true);`
到
your_shared_pref=PreferenceManager.getDefaultSharedPreferences(SplashActivity.this);
Boolean isFirstRun = your_shared_pref.getBoolean("isFirstRun", false);
以及将shared_pref编辑为
的下一行your_shared_pref.edit().putBoolean("isFirstRun",false).commit();