Android Splash活动在首次设置后未重定向

时间:2015-02-07 12:54:39

标签: android sharedpreferences splash

我想在首次设置时显示设置活动。

然后我有一个加载闪屏,在5秒后重定向。

然而,当我保存我的设置活动时,它会进入启动页面,但启动页面会卡住并且不会重定向。

在看到设置后的其他所有启动中,一切正常。它只是在第一次启动它是错误的。

请帮忙吗?

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainactivity);
        // get shared preferences
        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
        // first time run?
        if (pref.getBoolean("firstTimeRun", true)) {
            // start the preferences activity
            startActivity(new Intent(this, Settings.class));
            //get the preferences editor
            SharedPreferences.Editor editor = pref.edit();
            // avoid for next run
            editor.putBoolean("firstTimeRun", false);
            editor.commit();
        } else {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    final Intent mainIntent = new Intent(MainActivity.this, MainMenu.class);
                    startActivity(mainIntent);
                    finish();
                }
            }, 5000);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

这是因为Activity的生命周期。当您从设置活动返回时,不会再次调用onCreate。要解决此问题,您只需覆盖onResume()并移动

即可
// get shared preferences
        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
        // first time run?
        if (pref.getBoolean("firstTimeRun", true)) {
            // start the preferences activity
            startActivity(new Intent(this, Settings.class));
            //get the preferences editor
            SharedPreferences.Editor editor = pref.edit();
            // avoid for next run
            editor.putBoolean("firstTimeRun", false);
            editor.commit();
        } else {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    final Intent mainIntent = new Intent(MainActivity.this, MainMenu.class);
                    startActivity(mainIntent);
                    finish();
                }
            }, 5000);
        }

在里面(从onCreate中移除整个东西)