假设,小部件使用登录名和密码来检索一些数据。我将登录名和密码存储在 sharedPreferences 中。
只要我有 1 个小部件,一切正常。当我在 sharedPreferences 中添加第二个小部件登录名和密码时,这两个小部件都被替换了。
这个问题的典型解决方案是什么>
假设,小部件使用登录名和密码来检索一些数据。我将登录名和密码存储在 sharedPreferences 中。
只要我有 1 个小部件,一切正常。当我在 sharedPreferences 中添加第二个小部件登录名和密码时,这两个小部件都被替换了。
这个问题的典型解决方案是什么>
在通常情况下,AppWidget 的唯一标识符是 appWidgetId。因此,您可以通过这种方式组织您的偏好。
假设您有一个用于存储登录信息的密钥:
public static final String PREFS_LOGIN = "com.example.prefs.LOGIN";
以及两种存储值和检索值的方法:
public void setLogin(String login) {
prefs.edit().putString(PREFS_LOGIN, login).commit();
}
public String getLogin() {
return prefs.getString(PREFS_LOGIN, "");
}
要确保首选项存储每个 appWidgetId 的登录值并检索正确的值,您可以将 appWidgetId 传递给这些方法:
public void setLogin(String login, int appWidgetId) {
prefs.edit().putString(PREFS_LOGIN + appWidgetId, login).commit();
}
public String getLogin(int appWidgetId) {
return prefs.getString(PREFS_LOGIN + appWidgetId, "");
}
希望这可以帮助。