Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我希望我的布尔值在共享首选项中保存为true,但它总是保存为false_Java_Android_Sharedpreferences - Fatal编程技术网

Java 我希望我的布尔值在共享首选项中保存为true,但它总是保存为false

Java 我希望我的布尔值在共享首选项中保存为true,但它总是保存为false,java,android,sharedpreferences,Java,Android,Sharedpreferences,我试图将一个布尔值保存到共享首选项中,其值为true,但当我记录它时,我一直看到它返回一个false值。请参阅下面的代码,并记住此代码位于片段中 SharedPreferences AppPreferences = getActivity().getSharedPreferences("myPrefs", Activity.MODE_PRIVATE); boolean propertyManagerLoggedIn = AppPreferences.getBoolean(PROPE

我试图将一个布尔值保存到共享首选项中,其值为true,但当我记录它时,我一直看到它返回一个false值。请参阅下面的代码,并记住此代码位于片段中

 SharedPreferences AppPreferences = getActivity().getSharedPreferences("myPrefs", Activity.MODE_PRIVATE);
      boolean propertyManagerLoggedIn = AppPreferences.getBoolean(PROPERTYMANAGER_LOGGEDIN, false);

      if(!propertyManagerLoggedIn)
      {
         SharedPreferences.Editor editor = AppPreferences.edit();
         transitionInterface.showDashboardIcons();
         AppPreferences.edit().putBoolean("PROPERTYMANAGER_LOGGEDIN", true);
         editor.commit();
         //boolean vlaue = prefs.getbooleanflag(context, false);
         Log.d("tag",""+propertyManagerLoggedIn);

      }
     else
      {

         Log.d("tag",""+propertyManagerLoggedIn);
      }
下面是我的AppPreferences类中的相关代码行

 public final static String PROPERTYMANAGER_LOGGEDIN = "PROPERTYMANAGER_LOGGEDIN";

  public static boolean propertyManagerLoggedn(Context context)
   {
      TinyDB settings = new TinyDB(context);
      return settings.getBoolean(AppPreferences.PROPERTYMANAGER_LOGGEDIN);
   }

每次调用
edit()
时,都会向您返回一个新的
Editor
。根据文件

为这些首选项创建一个新编辑器,通过该编辑器可以 对首选项和原子提交中数据的修改 这些更改将返回到SharedReferences对象

所以你可以

AppPreferences.edit().putBoolean("PROPERTYMANAGER_LOGGEDIN", true).commit();


但是在一个实例上调用
putBoolean
,在另一个实例上调用
commit
,可能不会有什么帮助。 基本上,
AppPreferences.edit()
将为您提供一个新实例

AppPreferences.edit().putBoolean("PROPERTYMANAGER_LOGGEDIN", true);
这是放置布尔值的另一个实例

使用已创建的同一实例。 您的代码应该如下所示:

SharedPreferences.Editor editor = AppPreferences.edit();
         transitionInterface.showDashboardIcons();
         editor.putBoolean("PROPERTYMANAGER_LOGGEDIN", true);
         editor.commit();

谢谢,让我试试。我还怀疑我在应用程序首选项中声明它的方式是错误的。声明它的正确方法是什么,这样我就可以访问它了
SharedPreferences.Editor editor = AppPreferences.edit();
         transitionInterface.showDashboardIcons();
         editor.putBoolean("PROPERTYMANAGER_LOGGEDIN", true);
         editor.commit();