SharedPreferences在返回Activity时不更新值,但仅保留初始Activity加载值

时间:2014-03-28 21:48:03

标签: java android android-activity sharedpreferences

所以我尝试使用SharedPreferences将Activity中的值传递给Class。问题如下:

在初始加载Activity时,该值存储在SharedPreferences中,但如果我退出Activity并返回并尝试更新该值,则SharedPreferences似乎不会更新并保持在初始加载活动。

某些课程功能

private void populatePlayerQueue(){
        int category_index;
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this.getContext());
        category_index = sharedPreferences.getInt("selected_category", 0);
    }

活动onResume

@Override
public void onResume() {
    super.onResume();
    int tmp = Integer.parseInt(getIntent().getStringExtra("CategoryIndex"));
    //store the category in the shared preferences
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putInt("selected_category", tmp);
    editor.commit();
}

我要做的是:

我必须从活动向特定类发送一个整数,如果我回到活动,那么我需要存储更新值,这样类就能够再次访问新更新的值。我只能访问上下文而不是活动。如果我尝试创建接口回调以与活动通信,则会导致错误。所以这个选项被淘汰了,因此我正在尽我所能去做。

1 个答案:

答案 0 :(得分:0)

为了更好的结果在退出应用程序时通过其键删除 SharedPreference。

在退出应用程序的情况下,只需清除SharedPreference,如:

SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove("selected_category"); //Just remove it by its specific key
editor.commit();

然后,当您使用相同的密钥返回应用程序时,它将显然再次加载并保存新值,或者您可以使用新的值。