所以,我一直在开发一个学校项目的应用程序。 基本上它的作用是用户使用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”变量答案 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