我的Android应用程序中有一个单独的Utility.class,在这个Utility.class上我设置了一个方法来接收Activity并返回我在SharedPreferences中保存的东西,如下所示:
public static long retrieveFromSharedPrefs(Activity activity) {
sharedPref = activity.getPreferences(Context.MODE_PRIVATE);
long startTime = sharedPref.getLong("StartTime", 0);
return startTime;
}
问题在于,当我尝试从不同的类访问此方法时,我无法将此方法发送到当前活动:
alreadyStartTime = Utilities.retrieveFromSharedPrefs(getActivity());
问题是getActivity()似乎不是一个有效的API方法,所以我不知道在那里写什么,他同意接受的唯一API方法是getParent()根本没有效果(我没有使用片段,因此它不是儿童活动。)
我将非常感谢任何帮助,非常感谢!! :)
答案 0 :(得分:1)
您可以通过统一的方式从任何地方访问您的共享偏好设置:
PreferenceManager.getDefaultSharedPreferences(context)
只是传递你当前的背景
如果您希望从自己的类中访问它们,可以使用Application Context作为参数。
如果您创建自己的应用程序派生类并在Manifest中注册它,您将能够创建可以在任何地方使用的getSharedPreference函数
class MyApp extends Application {
private static MyApp instance;
public void onCreate() { this.instance = this; }
public static SharedPreferences prefs() { return PreferenceManager.getDefaultSharedPrefercnes(instance); }
}
但是在这种情况下不要忘记将它包含在清单中
答案 1 :(得分:0)
实际上你没有在这个函数中获得活动,而是Activity's Context
在Context
课程中获取non-Activty
的最佳做法是使用ContextWrapper
班级
请检查以下链接...您将明确了解其工作原理