【发布时间】:2016-05-16 14:48:33
【问题描述】:
使用意图添加联系人后,我的onActivityForResult 方法中有以下代码。
if (mySharedPrefs.getBoolean("settingsPopup", false) == false) { //First time
new AlertDialog.Builder(this)
.setTitle("Go to settings? ")
.setMessage("POPUP")
.setNegativeButton("No", null)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent settingsIntent = new Intent(MainActivity.this, Settings.class);
startActivity(settingsIntent);
}
}).show();
myEditor = mySharedPrefs.edit();
myEditor.putBoolean("settingsPopup", true);
myEditor.commit();
}
我希望这个弹出窗口只显示一次,这就是我在第一次显示对话框后将共享首选项键值“settingsPopup”设置为 true 的原因。但出于某种原因,对话框每次都会显示onActivityForResult 方法被调用。为什么每次都显示?
PS:我正在使用相同的共享首选项对象来存储其他值。
编辑
我在onCreate 中初始化我的共享首选项,如下所示:
mySharedPrefs = this.getSharedPreferences("sharedPrefsName", MainActivity.MODE_PRIVATE); //Making a shared preferences
【问题讨论】:
-
为什么是
== false?注意 getBoolean 会更好看 -
嗯,是的,它和你所做的一样,我只是指出了一个不必要的等号:)
-
是的。无论如何,是的,您能否在问题中添加更多代码,例如在哪里初始化 SharedPreferences。你想只显示一次弹出窗口还是只在用户按下是时不显示它?
-
这段代码是循环调用的吗?
-
代码看起来很正常。你能把
app info屏幕上的数据清空再试一次吗?可能首选项文件已损坏。或者只是尝试为您的首选项文件使用不同的名称。
标签: java android object sharedpreferences storage