public static void GetAllPoints(final IGetAllPointsCallBack callBack) {
SharedPreferences entity = getSharedPreferences("settings",MODE_PRIVATE);
String savedValue = entity.getString("entityGUID",null);
}
getSharedPreferences
在这里不起作用,有没有办法在我的方法中调用它,而我将其值保存在另一个类中?
我正在保存我的偏好:
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 showAllSpots()
{
DataService.GetAllPoints(newDataService.IGetAllChargingPointsCallBack() {
@Override
public void Success(ArrayList<ChargingSpot> chargingSpots) {
//
}
});
}
答案 0 :(得分:1)
您需要更改方法,使其不是static
或者您需要提供Context
作为此方法的参数之一,然后您的方法将如下所示:
public static void GetAllPoints(final Context context, final IGetAllPointsCallBack callBack) {
SharedPreferences entity = context.getSharedPreferences("settings",Context.MODE_PRIVATE);
String savedValue = entity.getString("entityGUID",null);
}
我希望这会有所帮助。
答案 1 :(得分:0)
根据Context
的官方文档,discussion on Ask Tom不是static
。因此,您无法在static
方法中访问它。
尝试定义您的方法,如下所示,它应该有效:
public void GetAllPoints(final IGetAllPointsCallBack callBack) {
SharedPreferences entity = getSharedPreferences("settings",MODE_PRIVATE);
String savedValue = entity.getString("entityGUID",null);
}
编辑:在检查您的评论回复后,我注意到您要求保持GetAllPoints(...)
静态。解决方法是传递调用Context
并从中调用getSharedPreferences(...)
:
public void GetAllPoints(final Context context, final IGetAllPointsCallBack callBack) {
SharedPreferences entity = context.getSharedPreferences("settings",MODE_PRIVATE);
String savedValue = entity.getString("entityGUID",null);
}