当前位置: 首页 > 知识库问答 >
问题:

Android 共享首选项布尔值不起作用

水飞掣
2023-03-14

我试图从SharedPreferences中获取布尔值,这是真的,但每次都会得到一个假值。名为“MyPref”的SharedPreferences文件包含以下代码:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<boolean name="PREMIUM" value="true" />
</map>

我正在为MyActivity中的SharedPreferences添加值。使用以下代码初始化:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 1); // 0 - for private mode
Editor editor = pref.edit();
editor.putBoolean("PREMIUM", true); // Storing boolean - true/false
editor.commit(); // commit changes
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));

并通过以下方式在多个类上检索它:

boolean mIsPremium = false;
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 1); // 0 - for private mode
mIsPremium = pref.getBoolean("PRIVATE", false); // getting boolean
Log.d("IS PREMIUM", String.valueOf(mIsPremium));
if(mIsPremium) {
    // PREMIUM USER - NO ADS
} else {
    // NOT PREMIUM USER - SHOW ADS
}

我总是得到Premium的值为false,发生这种情况的原因是什么,如何解决?我使用的是android 4.2.2。谢谢大家。

共有3个答案

戚承业
2023-03-14

您更改了密钥“高级”和“私人”。使用硬编码字符串通常是一种糟糕的编程做法。我建议为这些使用最终的静态变量。

袁亦
2023-03-14

SharedPrefernces保存在key: value对中,您将值放入“PREMIUM”并以“PRIVATE”的形式回退

国景铄
2023-03-14
mIsPremium = pref.getBoolean("PREMIUM", false); 

(“私人”,假)

你用了不同的钥匙,它们需要匹配。

 类似资料:
  • 对于下面的代码,我正在尝试检索共享的首选项,我认为它保存正确,但当我回到登录屏幕时,所有的数据都消失了。我需要它留在我回到这个屏幕上。所以我在个人资料页面上输入姓名、年龄和id到三个单独的行中。然后按下save按钮,然后按下action Bar上的back转到前面的页面。当我回到个人资料页面时,我的信息应该还在那里,但它没有任何帮助?

  • 非常感谢您的光临,我正在为学校开发一个应用程序,我遇到了另一个问题。该应用程序的主要思想是跟踪您的卡路里,我希望它能节省卡路里,所以当应用程序关闭时,它仍然会记住他们。我已经忙了一段时间了,现在尝试使用SavedPreferences,但我总是出现错误。我希望有人能帮我。 } 我可能做了很多明显的愚蠢的事情,但我真的弄不明白。 多谢!

  • 更新崩溃日志:

  • 你好,我正在尝试保存一个共享首选项的主题。当用户点击某个主题的按钮时,我希望该主题被设置为默认并保存,所以当他们重新打开应用程序时,它仍然是那个新主题。

  • 当我发送FCM消息且应用程序处于后台时,我想清除共享首选项。在方法中,我正在调用一个方法来清除它们。 我得到以下错误: 未处理的异常:MissingPluginException(在channel plugins.flatter.io/shared_首选项上找不到方法getAll的实现)

  • 问题内容: 如何确保UTF8用于共享首选项菜单?我有一个android偏好设置菜单,除其他外,该菜单允许用户设置其名称。 我需要知道如何将共享首选项中存储的数据转换为UTF8格式 在res / xml文件夹中一个名为settings的文件中,首选项菜单使用utf8编码以xml布局,如下所示: 处理这个的类是 我假设该设置 将确保文本将以UTF8格式编码,但这并非总是如此。我正在获得各种格式的价值。