我想要做的是使用SharedPreference保存最后一个状态,但我不知道这是我的mystake。我说它没有保存,因为当我旋转屏幕时再次弹出alertDialog。
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Alert Dialog")
.setMessage("Startup Button Visibility:")
.setPositiveButton("Hidden", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if(buttonVisible == true)
{
myLayout2.setVisibility(View.INVISIBLE);
}
else
myLayout2.setVisibility(View.VISIBLE);
SharedPreferences myPrefs = getPreferences(MODE_PRIVATE);
boolean storedPreference = myPrefs.getBoolean("Skip", true);
SharedPreferences.Editor editor = myPrefs.edit();
if(storedPreference != false)
{
storedPreference= true;
}
editor.putBoolean("Skip", storedPreference);
editor.commit();
}
})
.show();
答案 0 :(得分:2)
这一切都正常,但您保存的是您刚读过的相同值:
int storedPreference = preferences.getInt("Skip", 0);
editor.putInt("Skip", storedPreference);
虽然您需要,但在某些时候,将其更改为1
以产生任何实际效果,否则它始终为0
。您的代码也缺少与Skip
相关的任何条件,因此无论如何它都会显示对话框。我宁愿使用Bool
代替Int
答案 1 :(得分:0)
而不只是将android:configChanges="orientation"
放在Manifest文件中的Activity代码中。这将自动处理屏幕方向更改。
答案 2 :(得分:0)
int storedPreference = preferences.getInt("Skip", 1);
SharedPreferences.Editor editor = preferences.edit();
if(storedPreference==1)
{
storedPreference = 0;
}
editor.putInt("Skip", storedPreference);
editor.commit();
now after this u should check for 0, where trying stop the pop up of the dialog box