我正在为Android制作应用程序,在Splash屏幕上我希望它在第一次启动应用程序时显示AlertDialog。这是我的代码:
SharedPreferences savedInfo = getSharedPreferences("SavedInfo", MODE_PRIVATE);
SharedPreferences.Editor infoEditor = savedInfo.edit();
boolean firstLaunch = savedInfo.getBoolean("firstLaunch", true);
final AlertDialog importDialog = new AlertDialog.Builder(SplashActivity.this).create();
if (firstLaunch == true) {
importDialog.setTitle(R.string.splash_import_title);
importDialog.setMessage(getString(R.string.splash_import_text));
importDialog.setIcon(android.R.drawable.ic_dialog_alert);
importDialog.setButton(getString(R.string.splash_import_yes), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//ALL FILE STUFF HERE
importDialog.dismiss();
startTimer();
}
});
importDialog.setButton2(getString(R.string.splash_import_no), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
importDialog.dismiss();
startTimer();
}
});
importDialog.show();
infoEditor.putBoolean("firstLaunch", false);
} else {
startTimer();
}
问题是,每次都会向我显示对话框。即使我已经推出它。感谢您的时间和帮助,zeokila。
答案 0 :(得分:1)
我相信你必须在infoEditor.commit()
之后运行putBoolean
。在您这样做之前,它实际上并不保存新的首选项。
http://developer.android.com/reference/android/content/SharedPreferences.Editor.html
答案 1 :(得分:1)
你必须告诉你的编辑保存。添加infoEditor.commit();
(同步)或infoEditor.apply();
(异步)以保留您的值。
答案 2 :(得分:1)
infoEditor.commit()
后似乎缺少 infoEditor.putBoolean("firstLaunch", false)
,因此永远不会保存新值。