请帮帮我。我不知道这段代码有什么问题:
import android.appwidget.AppWidgetProvider;
import android.content.SharedPreferences;
public class WeatherWidget extends AppWidgetProvider {
static SharedPreferences settings = getSharedPreferences("weather_prefs", 0);
public void onUpdate()
{
settings.getString("location", "N/A");
}
}
在“静态SharedPreferences ...”行中,我收到错误:
方法getSharedPreferences(String,int)未定义类型WeatherWidget
为什么它的类方法是未定义的方法?
答案 0 :(得分:4)
getSharedPreferences
方法不适用于AppWidgetProvider
,因为它不是上下文。此链接解释了一点:Get preferences in AppWidget Provider
答案 1 :(得分:4)
您需要一个Context对象来获取共享首选项引用:
// add to WeatherWidget:
@Override
public void onEnabled(Context ctx)
{
settings = ctx.getSharedPreferences("weather_prefs", 0);
}
答案 2 :(得分:2)
将上下文作为参数从活动类发送到非活动类
在您的Activity类中:
function_name( getApplicationContext() ); // calling
(or simply)
function_name( this ); // calling
在您的非活动类中:(不存在上下文)
public void fun_name(Context ctx)
{
settings = ctx.getSharedPreferences("pref", 0);
}
答案 3 :(得分:0)
我使用此代码在AppWidgetProvider中获取共享首选项对象:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (prefs == null)
throw new NullPointerException("prefs");
prefs.getInt(....);