Android 在AppWidget上调用SharedReferences

Android 在AppWidget上调用SharedReferences,android,Android,我想知道在appWidget提供程序类上调用SharedReference值是否有问题,以便我可以使用它进行更新。我有一段代码,我在appWidget提供程序类中调用了一个方法,但它一直给我编译错误,我应该为它创建一个方法。代码如下: prefs = getSharedPreference("myPrefs", Context.MODE_PRIVATE); 这是一个已知问题吗?如果不可能,是否有其他方法可以从配置类传递值。听起来您没有使用上下文初始化它。调用getSharedReference

我想知道在appWidget提供程序类上调用SharedReference值是否有问题,以便我可以使用它进行更新。我有一段代码,我在appWidget提供程序类中调用了一个方法,但它一直给我编译错误,我应该为它创建一个方法。代码如下:

prefs = getSharedPreference("myPrefs", Context.MODE_PRIVATE);

这是一个已知问题吗?如果不可能,是否有其他方法可以从配置类传递值。

听起来您没有使用上下文初始化它。调用
getSharedReference
假定
this.getSharedReference
可能不正确

您在哪个类中调用它,也许您可以提供更多的源代码

如果我猜,我会说你可以修复的是这样的:

prefs = getContext().getSharedPreference("myPrefs", Context.MODE_PRIVATE);
或许:

prefs = getApplicationContext().getSharedPreference("myPrefs", Context.MODE_PRIVATE);
或者,如果您有权访问视图类:

prefs = view.getContext().getSharedPreference("myPrefs", Context.MODE_PRIVATE);

AppWidgetProvider
s不是
Context
s,因此无法访问
getSharedReferences()

但是,有一种标准的方法可以设置AppWidget的首选项,Android开发者网站对此进行了说明:

基本思想是,当用户表示要配置小部件时,告诉系统启动活动。配置屏幕显然是一个
活动
,因此它可以访问
共享参考
。然后在那里进行所有配置,并手动更新
AppWidget
,其ID在start
Intent
中传递。一定要看看上面的链接,看看所需的详细步骤


另请参阅以获取实际的源代码示例。

没问题;关于Android,我还有很多东西要学。干杯