Android 共享参考不起作用-can';我不明白为什么

Android 共享参考不起作用-can';我不明白为什么,android,android-studio,sharedpreferences,Android,Android Studio,Sharedpreferences,所以我基本上是想通过在activity1中按下按钮来为activity2设置一个BG图像 我正在使用SharedReference,因此该选项将始终保留 问题是,按下按钮后,我正在将字符串保存到SharedReference: public void onClick(View v) { SharedPreferences.Editor background = getSharedPreferences("Background", MODE_PRIVATE).edit(); if

所以我基本上是想通过在activity1中按下按钮来为activity2设置一个BG图像

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

问题是,按下按钮后,我正在将字符串保存到SharedReference:

 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();
    }

}
然后,在活动2的onCreate中:

 SharedPreferences background = getSharedPreferences("Background", MODE_PRIVATE);
    String chosenBackground = background.getString("SelectedBg", null);
    Toast.makeText(this,"chosenBackground:" + chosenBackground, Toast.LENGTH_SHORT).show();
最后一个吐司,打印出chosenBackground:null,无论我按哪个按钮。 我做错了什么


谢谢。

共享引用ID区分大小写

更改此项:

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

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

您可以使用DefaultSharedReferences简单地从应用程序的任何一点添加和更改数据:

请举例说明:

PreferenceManager.getDefaultSharedPreferences(context)
                .edit()
                .putString(KEY, "value")
                .apply();
获取值:

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

))

您的钥匙有误-将
SelectedBg
中的“S”改为小写。最好还是使用常量键值,如果它们从未更改,就引用它们。
PreferenceManager.getDefaultSharedPreferences(context)
                .getString(KEY, "Default value"