首页 > 解决方案 > 无法从不同的活动读取和写入数据到相同的共享首选项

问题描述

我有很多Activities应用Fragments程序。我正在从 Activity 的 Preference 中保存一些数据。我只能SharedPreference在某些 Activity 和 Fragments 中保存和读取数据。我正在将数据写入特定的 PreferenceMainActivity并从另一个 Preference 中读取数据Activity 和 Fragment 是可能的。但是假设当我从ActivityTwo相同的 Preference 写入数据并读取数据ActivityThree和其他数据时,Fragments这是不可能的。
这是将数据保存在 Preference 中的代码MainActivity

SharedPreferences prefs,prefs1;
    SharedPreferences.Editor edit;

     prefs=MainActivity.this.getSharedPreferences("myPrefs",MODE_PRIVATE);
     edit=prefs.edit();
      public void onResponse(JSONObject response) {

                        try {
                            saveToken = response.getString("token");
                            edit.putString("token", saveToken);
                            Log.i("Login", saveToken);
                            edit.apply();
                            }
                            catch(JSONException e)
                            {

                            }  

这是检索 Preference 值的代码Fragment

SharedPreferences prefs;
  prefs=getContext().getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
  myToken = prefs.getString("token", "empty");  

这是将数据保存在相同首选项中的代码SecondActivity

 SharedPreferences prefs;
SharedPreferences.Editor edit;
 String saveToken;
  prefs = ActivitySecond.this.getSharedPreferences("myPrefs", MODE_PRIVATE);
    @Override
    public void onResponse(JSONObject response) {
    try {
               edit = prefs.edit();
             saveToken = response.getString("token");
              edit.putString("token", saveToken);
            edit.apply();
        }
         catch(JSONException e)
         {
         }  

Fragments这是在同一应用程序 中检索到相同值的代码

SharedPreferences prefs;
  prefs=getContext().getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
  myToken = prefs.getString("token", "empty");  

但是这次我无法保存值并检索值。如何做到这一点?

标签: androidandroid-fragmentsandroid-sharedpreferences

解决方案


推荐阅读