带有SharedReferences的Android小部件配置

带有SharedReferences的Android小部件配置,android,configuration,widget,sharedpreferences,Android,Configuration,Widget,Sharedpreferences,我想让用户在启动我正在使用的主屏幕小部件时定义一个用户名。但是我在小部件中存储和访问这个值时遇到了麻烦。我现在要做的是创建一个配置活动,该活动在创建小部件时开始。因此,我在清单文件中定义了它,如下所示(我还在widgetprovider.xml中定义了它): 我的问题是如何访问此值?在我的小部件类中,我希望有一个实例变量,如: final String userName = ...; //load the username here. 但是如何在我的小部件中检索用户名呢?问题是小部件是AppW

我想让用户在启动我正在使用的主屏幕小部件时定义一个用户名。但是我在小部件中存储和访问这个值时遇到了麻烦。我现在要做的是创建一个配置活动,该活动在创建小部件时开始。因此,我在清单文件中定义了它,如下所示(我还在widgetprovider.xml中定义了它):

我的问题是如何访问此值?在我的小部件类中,我希望有一个实例变量,如:

final String userName = ...; //load the username here.
但是如何在我的小部件中检索用户名呢?问题是小部件是
AppWidgetProvider
的子类,我无法从中访问
SharedReferences
(因为
AppWidgetProvider
不是
上下文的子类)。我考虑将用户名存储在strings.xml文件中,这似乎也不可能。使用
SharedReferences
是否正确?我还考虑将用户名设置为我的小部件的
TextView
,稍后它会显示用户名。但是对于一些服务器请求,我需要类中的用户名,并且似乎无法在小部件中获取
TextView
的文本…只有setter
setTextViewText(String text)
被定义


如何检索用户名?

您需要从上下文中获取SharedReferences实例,该实例在小部件提供程序的onUpdate()方法中提供。大概是这样的:

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME,0);
}
final String userName = ...; //load the username here.
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME,0);
}