【问题标题】:SharedPreference not working- can't see whySharedPreference 不起作用 - 不明白为什么
【发布时间】:2017-03-16 19:30:02
【问题描述】:

所以我基本上是在尝试通过在 activity1 中按下按钮来为 activity2 设置 BG 图像。

我正在使用 sharedpreference,因此该选项将始终保留。

问题是,按下按钮后,我将一个字符串保存到 SharedPreference:

 public void onClick(View v) {
    SharedPreferences.Editor background = getSharedPreferences("Background", MODE_PRIVATE).edit();
    if(btn1 == v)
    {
        Toast.makeText(this, "btn1", Toast.LENGTH_SHORT).show();
        background.putString("selectedBG", "White");
        background.commit();
    }
    if(btn2 == v)
    {
        background.putString("selectedBG", "Black");
        background.commit();
    }
    if(btn3 == v)
    {
        background.putString("selectedBG", "Blue");
        background.commit();
    }
    if(btn4 == v)
    {
        background.putString("selectedBG", "Brown");
        background.commit();
    }

}

然后,在activity2的onCreate中:

 SharedPreferences background = getSharedPreferences("Background", MODE_PRIVATE);
    String chosenBackground = background.getString("SelectedBg", null);
    Toast.makeText(this,"chosenBackground:" + chosenBackground, Toast.LENGTH_SHORT).show();

无论我按什么按钮,最后一个 Toast 都会打印出 selectedBackground:null。 我做错了什么?

谢谢。

【问题讨论】:

  • 您的密钥错误 - 将 SelectedBg 中的“S”更改为小写。最好还是使用常量键值并引用它们(如果它们永远不会改变)。

标签: android android-studio sharedpreferences


【解决方案1】:

SharedPreferences Id 区分大小写

改变这个:

String chosenBackground = background.getString("SelectedBg", null);

到这里:

String chosenBackground = background.getString("selectedBG", null);

【讨论】:

    【解决方案2】:
     String chosenBackground = background.getString("selectedBG", null);
    

    【讨论】:

      【解决方案3】:

      您可以使用 defaultSharedPreferences 从应用程序的任何位置简单地添加和更改数据:

      放任何值的例子:

      PreferenceManager.getDefaultSharedPreferences(context)
                      .edit()
                      .putString(KEY, "value")
                      .apply();
      

      获取价值:

      PreferenceManager.getDefaultSharedPreferences(context)
                      .getString(KEY, "Default value"
      

      );

      【讨论】:

        猜你喜欢
        • 2014-04-20
        • 1970-01-01
        • 2021-07-10
        • 1970-01-01
        • 2015-06-22
        • 1970-01-01
        • 2020-06-20
        • 2022-01-23
        • 2021-10-07
        相关资源
        最近更新 更多