启动画面出现两次

时间:2016-03-08 07:05:40

标签: java android android-intent sharedpreferences splash-screen

我是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);
}

  }

3 个答案:

答案 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();