我想让用户在启动我正在处理的主屏幕小部件时定义用户名。但是我在我的小部件中存储和访问这个值时遇到了麻烦。我目前所做的是创建一个配置活动,该活动在创建小部件时开始。因此我在 manifest 文件中定义如下(我也在 widgetprovider.xml 中定义了它):
<activity android:name=".ExampleAppWidgetConfigure">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
</intent-filter>
</activity>
然后,配置活动允许用户输入将存储在SharedPreferences
小部件中的用户名:
SharedPreferences.Editor prefs = context.getSharedPreferences(PREFS_NAME, MODE_WORLD_READABLE).edit();
prefs.putString("username", text);
prefs.commit();
我的问题是我如何访问这个值?在我的小部件类中,我想要一个实例变量,例如:
final String userName = ...; //load the username here.
但是如何在我的小部件中检索用户名?问题是小部件是AppWidgetProvider
我无法访问的子类SharedPreferences
(因为AppWidgetProvider
不是 的子类Context
)。我考虑将用户名存储在 strings.xml 文件中,这似乎也不可能。使用SharedPreferences
正确的方法吗?我还考虑将用户名设置TextView
为我的小部件的一个,稍后应该显示用户名。但是对于某些服务器请求,我需要类中的用户名,并且似乎无法TextView
在小部件中获取 a 的文本……仅定义了 setter setTextViewText(String text)
。
我怎样才能找回用户名?