带有SharedReferences的Android小部件配置
我想让用户在启动我正在使用的主屏幕小部件时定义一个用户名。但是我在小部件中存储和访问这个值时遇到了麻烦。我现在要做的是创建一个配置活动,该活动在创建小部件时开始。因此,我在清单文件中定义了它,如下所示(我还在widgetprovider.xml中定义了它): 我的问题是如何访问此值?在我的小部件类中,我希望有一个实例变量,如:带有SharedReferences的Android小部件配置,android,configuration,widget,sharedpreferences,Android,Configuration,Widget,Sharedpreferences,我想让用户在启动我正在使用的主屏幕小部件时定义一个用户名。但是我在小部件中存储和访问这个值时遇到了麻烦。我现在要做的是创建一个配置活动,该活动在创建小部件时开始。因此,我在清单文件中定义了它,如下所示(我还在widgetprovider.xml中定义了它): 我的问题是如何访问此值?在我的小部件类中,我希望有一个实例变量,如: final String userName = ...; //load the username here. 但是如何在我的小部件中检索用户名呢?问题是小部件是AppW
final String userName = ...; //load the username here.
但是如何在我的小部件中检索用户名呢?问题是小部件是AppWidgetProvider
的子类,我无法从中访问SharedReferences
(因为AppWidgetProvider
不是上下文的子类)。我考虑将用户名存储在strings.xml文件中,这似乎也不可能。使用SharedReferences
是否正确?我还考虑将用户名设置为我的小部件的TextView
,稍后它会显示用户名。但是对于一些服务器请求,我需要类中的用户名,并且似乎无法在小部件中获取TextView
的文本…只有settersetTextViewText(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);
}