Java 接收活动的Android实用程序方法

Java 接收活动的Android实用程序方法,java,android,Java,Android,我在Android应用程序中有一个单独的Utility.class,在这个Utility.class上,我设置了一个方法来接收活动并返回我保存在SharedReferences中的内容,如下所示: public static long retrieveFromSharedPrefs(Activity activity) { sharedPref = activity.getPreferences(Context.MODE_PRIVATE); long startTime = s

我在Android应用程序中有一个单独的Utility.class,在这个Utility.class上,我设置了一个方法来接收活动并返回我保存在SharedReferences中的内容,如下所示:

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(),它根本没有任何效果(我没有使用片段,所以它不是子活动)


我将感谢任何帮助,非常感谢!!:)

实际上,您并没有在该函数中获取活动,而是获取活动的上下文

非活动
类中获取
上下文
的最佳实践是使用
ContextWrapper

请检查下面的链接…你会得到一个清晰的想法,它是如何工作的


您可以在任何地方以统一的方式访问您的共享首选项:

PreferenceManager.getDefaultSharedPreferences(context)
只是传递您当前的上下文

如果希望从自己的类访问它们,可以使用应用程序上下文作为参数

如果您创建自己的应用程序派生类并将其注册到清单中,您将能够创建GetSharedReference函数,您可以在任何地方使用它

class MyApp extends Application {
private static MyApp instance;
public void onCreate() { this.instance = this; }
public static SharedPreferences prefs() { return PreferenceManager.getDefaultSharedPrefercnes(instance); }
}

但别忘了在本例中将其包含在清单中

在实用程序类的构造函数中传递一个
上下文
。使用
上下文
而不是
活动
解决了它,谢谢!我只需要访问PreferenceManager.getDefaultSharedReferences(上下文)