代码之家  ›  专栏  ›  技术社区  ›  Zidane

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

  •  -4
  • Zidane  · 技术社区  · 8 年前

    我试图将布尔值保存到共享首选项中,其值为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);
       }
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   Blackbelt    8 年前

    每次你打电话 edit() 一个新的 Editor

    对首选项和原子提交中数据的修改 这些更改返回到SharedReferences对象。

    所以你要么做

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

    或

     editor.putBoolean("PROPERTYMANAGER_LOGGEDIN", true);
     editor.commit();
    

    但是打电话 putBoolean 在一个实例上 commit 另一方面可能不会有帮助

        2
  •  0
  •   Mastershifu    8 年前

    您正在另一个实例上调用commit。 大体上 AppPreferences.edit() 将为您提供一个新实例。

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

    这是放置布尔值的另一个实例。

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

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