【问题标题】:Splash screen appears twice闪屏出现两次
【发布时间】:2016-03-08 07:05:39
【问题描述】:

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

  }

【问题讨论】:

  • 显示 ProfilePage.class 的代码。这段代码看起来不错。我认为您的 ProfilePage 活动有问题

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


【解决方案1】:

我使用与启动相同的方式作为一个活动,但我们不应该为启动加载单独的活动。我们可以为我们的启动器屏幕设置 Windowbackground

所以它会显示该背景,直到我们的主视图完全加载。

这里有关于这个https://www.bignerdranch.com/blog/splash-screens-the-right-way/的很好的教程

【讨论】:

    【解决方案2】:

    尝试在您的初始屏幕活动中添加此代码 sn-p:

            @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
            }
    

    【讨论】:

    • 闪屏问题已解决,但个人资料页面立即跳转到下一个屏幕。我该如何解决这个问题?
    【解决方案3】:

    更改此代码`

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

    【讨论】:

    • 布尔 isFirstRun = your_shared_pref.getBoolean("isFirstRun", MODE_PRIVATE); String boolean 不能应用于 String int。
    • 是的,在那里放一个空检查,它将是第一次为空。
    • 您能否详细说明@inkedTechie。
    • if(isFirstRun!=null && isFirstRun)
    • SharedPreferences 中的 getBoolean (String, boolean) 不能应用于 (String, int) @inkedTechie
    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 2021-04-06
    • 2014-07-25
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多