无法从 SharedPreferences 读取密钥
Cannot read key from SharedPreferences
所以基本上我有一个 activity (SplashActivity
) 作为初始屏幕。它从应用程序的 SharedPreferences
中读取一个名为 username
的键,然后如果找到该键,则启动 HomePage
activity。否则它开始 LoginActivity
。 LoginActivity
登录成功后,我通过以下代码存储用户名和密码:
SharedPreferences prefs = LoginActivity.this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("username", username);
editor.putString("password", password);
editor.apply();
登录页面还具有密码字段的自动完成功能。这就是我读取密码的方式:
String password = this.getPreferences(MODE_PRIVATE).getString("password", "");
然后我得到了存储的密码。但是,当我重新启动应用程序并且 运行 SplashActivity
我无法读取密码,尽管使用与上面完全相同的代码。我在这里做错了吗?
引用 the JavaDocs for getPreferences()
:
Retrieve a SharedPreferences object for accessing preferences that are private to this activity.
(强调)
因此,SplashActivity
无法读取写入 LoginActivity
的私有首选项的值。
您可能想切换到 getSharedPreferences()
,您可以在其中提供可以在两个活动之间共享的自己的名称。
所以基本上我有一个 activity (SplashActivity
) 作为初始屏幕。它从应用程序的 SharedPreferences
中读取一个名为 username
的键,然后如果找到该键,则启动 HomePage
activity。否则它开始 LoginActivity
。 LoginActivity
登录成功后,我通过以下代码存储用户名和密码:
SharedPreferences prefs = LoginActivity.this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("username", username);
editor.putString("password", password);
editor.apply();
登录页面还具有密码字段的自动完成功能。这就是我读取密码的方式:
String password = this.getPreferences(MODE_PRIVATE).getString("password", "");
然后我得到了存储的密码。但是,当我重新启动应用程序并且 运行 SplashActivity
我无法读取密码,尽管使用与上面完全相同的代码。我在这里做错了吗?
引用 the JavaDocs for getPreferences()
:
Retrieve a SharedPreferences object for accessing preferences that are private to this activity.
(强调)
因此,SplashActivity
无法读取写入 LoginActivity
的私有首选项的值。
您可能想切换到 getSharedPreferences()
,您可以在其中提供可以在两个活动之间共享的自己的名称。