接收Activity的Android实用程序方法

时间:2014-10-03 07:43:44

标签: java android

我的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()根本没有效果(我没有使用片段,因此它不是儿童活动。)

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

2 个答案:

答案 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班级

请检查以下链接...您将明确了解其工作原理

http://itekblog.com/android-context-in-non-activity-class/