Java Android GetSharedReferences在方法内部不起作用

Java Android GetSharedReferences在方法内部不起作用,java,android,sharedpreferences,Java,Android,Sharedpreferences,getSharedReferences在这里不起作用,当我将它的值保存在另一个类中时,有没有办法在我的方法中调用它 我正在保存我的首选项,如下所示: public static void GetAllPoints(final IGetAllPointsCallBack callBack) { SharedPreferences entity = getSharedPreferences("settings",MODE_PRIVATE); String savedValu

getSharedReferences
在这里不起作用,当我将它的值保存在另一个类中时,有没有办法在我的方法中调用它

我正在保存我的首选项,如下所示:

public static void GetAllPoints(final IGetAllPointsCallBack callBack) {    
    SharedPreferences entity =  getSharedPreferences("settings",MODE_PRIVATE);
    String savedValue = entity.getString("entityGUID",null);
}
我需要将我的方法设置为静态,因为我从另一个类访问它:

EntityType selectedItem = ApplicationController.entities.get(which);
SharedPreferences.Editor savedValue = getSharedPreferences("settings",MODE_PRIVATE).edit();
savedValue.putString("entityGUID", String.valueOf(selectedItem.EntityGUID));
savedValue.apply();
public void showallpots()
{
DataService.GetAllPoints(newDataService.IGetAllChargingPointsCallBack(){
@凌驾
公开作废成功(ArrayList chargingSpots){
//
}
});
}

根据
上下文的官方文档
,不是
静态的
。因此,您将无法在
静态方法中访问它

尝试定义如下所示的方法,它应该可以工作:

    public void showAllSpots()
    {
     DataService.GetAllPoints(newDataService.IGetAllChargingPointsCallBack() {
     @Override
     public void Success(ArrayList<ChargingSpot> chargingSpots) {
      //
     }

     });
    }

编辑:在查看您的评论回复时,我注意到您要求保持
GetAllPoints(…)
静态。一种解决方法是传递调用
上下文
并从中调用
getSharedReferences(…)

public void GetAllPoints(final IGetAllPointsCallBack callBack) {    
    SharedPreferences entity =  getSharedPreferences("settings",MODE_PRIVATE);
    String savedValue = entity.getString("entityGUID",null);
}

您需要更改方法,使其不是
静态的
,或者需要提供
上下文
作为此方法的参数之一,然后您的方法将如下所示:

public void GetAllPoints(final Context context, final IGetAllPointsCallBack callBack) {    
    SharedPreferences entity =  context.getSharedPreferences("settings",MODE_PRIVATE);
    String savedValue = entity.getString("entityGUID",null);
}

我希望这有帮助。

您如何保存pref?您得到的错误/输出是什么??您确定已将数据保存在sharedpreferencePossible duplicate of Make your method not static中吗使用savedValue.commit()方法。但是,当我删除static时,无法从其他类访问该方法,对吗?如果没有该类的实例,它将无法直接访问,当然。我已经编辑了我的答案。谢谢它起作用了,我编辑的最后一个问题是如何反映我调用的方法的变化?嗯。。这取决于:你把
showallpots(…)
放在哪里?它是否来自
活动
?或者是另一个非基于上下文的类?这与我的解决方案有何不同?
public static void GetAllPoints(final Context context, final IGetAllPointsCallBack callBack) {    
    SharedPreferences entity =  context.getSharedPreferences("settings",Context.MODE_PRIVATE);
    String savedValue = entity.getString("entityGUID",null);
}