Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 启动屏幕出现两次_Java_Android_Android Intent_Sharedpreferences_Splash Screen - Fatal编程技术网

Java 启动屏幕出现两次

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

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

  }

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