如何使用共享首选项保存警报对话框

时间:2014-01-08 13:12:13

标签: android

我想要做的是使用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();

3 个答案:

答案 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