从Android应用小部件获取SharedPreferences

时间:2011-07-20 14:52:20

标签: android widget sharedpreferences

我正在构建一个简单的小部件,它从名为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 );
}
}

1 个答案:

答案 0 :(得分:0)

  1. 检查是否在两个位置打开了同名的SharedPreferences(小部件和ModifyInfo活动)。在上面的示例中,名称为“Monday”。
  2. 导入android.content.Context并使用Context.MODE_PRIVATE清除错误