【问题标题】:Android Widget Configuration with SharedPreferences带有 SharedPreferences 的 Android 小部件配置
【发布时间】:2011-07-08 05:41:10
【问题描述】:

我想让用户在启动我正在处理的主屏幕小部件时定义用户名。但是我在我的小部件中存储和访问这个值时遇到了麻烦。我目前所做的是创建一个配置活动,该活动在创建小部件时开始。因此我在 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 的文本...仅定义了设置器setTextViewText(String text)

如何找回用户名?

【问题讨论】:

    标签: android configuration widget sharedpreferences


    【解决方案1】:

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

        public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME,0);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多