【问题标题】:Getting SharedPreferences from Android app widget从 Android 应用小部件获取 SharedPreferences
【发布时间】:2011-07-20 14:52:19
【问题描述】:

我正在构建一个简单的小部件,该小部件从名为 ModifyInfo 的 Acitvity 中设置的 SharedPreferences 获取数据,但我不知道该怎么做。下面的代码由于某种让我无法理解的原因不起作用。

错误:无法从 ContextWrapper 类型对非静态方法 getSharedPreferences(String, int) 进行静态引用。

public class WatchWidget extends AppWidgetProvider {

@Override
public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds )
{
    RemoteViews remoteViews = new RemoteViews( context.getPackageName(), R.layout.widget_layout );
    ComponentName watchWidget = new ComponentName( context, WatchWidget.class );

    switch (Calendar.DAY_OF_WEEK){
    case Calendar.MONDAY:
        SharedPreferences settings = ModifyInfo.getSharedPreferences("Monday", Context.MODE_PRIVATE);
        remoteViews.setTextViewText( R.id.widText, settings.getString("Monday", ""));
        break;
    default:
        break;
    }

    appWidgetManager.updateAppWidget( watchWidget, remoteViews );
}
}

【问题讨论】:

    标签: android widget sharedpreferences


    【解决方案1】:
    1. 检查您是否在两个地方(小部件和 ModifyInfo 活动)都以相同的名称打开了 SharedPreferences。在上面的示例中,名称是“Monday”。
    2. 导入android.content.Context并使用Context.MODE_PRIVATE消除错误

    【讨论】:

    • 谢谢,解决了部分问题,尽管代码仍然无法编译。错误:无法从 ContextWrapper 类型对非静态方法 getSharedPreferences(String, int) 进行静态引用。
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 2018-01-24
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    相关资源
    最近更新 更多