我想在首次设置时显示设置活动。
然后我有一个加载闪屏,在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);
}
}
}
答案 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中移除整个东西)