SharedPreferences使值混淆

时间:2018-03-13 19:03:37

标签: java android sharedpreferences

在我的代码中,我使用了两种按特定顺序调用的方法。

1)

public void setWhoseSelected(int newWhoseSelected) {
    this.whoseSelected = newWhoseSelected;
    sharedEditor = sharedPreferences.edit();
    sharedEditor.putInt(getString(R.string.whoseHome), newWhoseSelected);
    sharedEditor.apply();
}

2)

  public void setSortSelected(int newSortSelected) {
        this.sortSelected = newSortSelected;
        sharedEditor = sharedPreferences.edit();
        sharedEditor.putInt(getString(R.string.sortHome), newSortSelected);
        sharedEditor.apply();
    }

但我注意到的是它设置了" R.string.whoseHome"和" R.string.sortHome"到相同的newSortSelected值。在尝试理解问题时,我试图切换他们的位置,然后他们都将newWhoseSelected保存到SP。据我所知,调用的最后一个setter将其值设置为两个字符串。由于某些限制,我无法在一种方法中设置它们然后应用()。

我也尝试为每个人创建单独的编辑器,但它没有帮助。那么这是如何工作的?如何编辑两次值而不会混淆它们呢?

我有点尴尬,所以提前谢谢你!

1 个答案:

答案 0 :(得分:0)

这是因为在您的strings.xml中,您为两个字符串资源设置了相同的值,例如

 <string name="sortHome">xyz</string>
 <string name="whoseHome">xyz</string>

所以更改它并将 UNIQUE 值提供给 UNIQUE 字符串资源。