共享首选项即使在保存后也无法检索变量

时间:2018-02-19 21:54:13

标签: java android

所以,我一直在开发一个学校项目的应用程序。 基本上它的作用是用户使用Instagram API登录。 他的令牌保存在共享首选项中,因此用户无需在每次进入应用程序时登录。 一旦用户第一次登录,用户的完整Instagram名称也会保存在共享首选项中:

 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                    SharedPreferences.Editor editor = prefs.edit();
                   editor.putString("full_name", Global.full_name);
                    editor.commit();

这是在 LoginActivity 中保存full_name的代码。我已经调试了这部分代码和共享首选项以正确保存所有数据。 问题是当用户已经登录时(他登录,关闭应用程序并再次打开它)并转到ProfileActivity一个标签,该标签应该得到SharedPreferences full_name变量不能得到它。 检索数据的代码在哪里:

  SharedPreferences editor = PreferenceManager.getDefaultSharedPreferences(ProfileActivity.this);
    String full_name = editor.getString("full_name",null);

txtNomeUtilizador.setText(FULL_NAME);

从共享首选项中检索数据时是否有任何问题?因为我在调试它时说共享首选项

中没有“full_name”变量

1 个答案:

答案 0 :(得分:1)

当我尝试使用您的代码保存到共享首选项时,它无法正常工作。  更改此代码:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                    SharedPreferences.Editor editor = prefs.edit();
                   editor.putString("full_name", Global.full_name);
                    editor.commit();

为:

        SharedPreferences.Editor editor = getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE).edit();
        editor.putString("full_name", Global.full_name);
        editor.apply();

您尝试使用以下代码检索信息:

 SharedPreferences editor = PreferenceManager.getDefaultSharedPreferences(ProfileActivity.this);
    String full_name = editor.getString("full_name",null); 

请尝试将其更改为:

SharedPreferences prefs = getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE);
 String full_name = prefs.getString("full_name", null);

有关共享参考的一些信息:

Android Shared preferences example

https://developer.android.com/training/data-storage/shared-preferences.html#java