0

假设,小部件使用登录名和密码来检索一些数据。我将登录名和密码存储在 sharedPreferences 中。

只要我有 1 个小部件,一切正常。当我在 sharedPreferences 中添加第二个小部件登录名和密码时,这两个小部件都被替换了。

这个问题的典型解决方案是什么>

4

1 回答 1

1

在通常情况下,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, "");
}

希望这可以帮助。

于 2012-08-22T13:13:41.123 回答