0

我收到以下错误消息:

“无法从类型 Activity 对非静态方法 getPreferences(int) 进行静态引用”是我的错误。'TimeCardLogin' 必须是静态变量。”

如何获得对静态String变量的偏好?

public class MyBaseURLContainer extends Activity {

    public static String urlPref = "";

    static String BASE_URL = 
           getPreferences(MODE_PRIVATE).getString("Name of variable",urlPref);

    public static final  String TimeCardLogin = BASE_URL + "/timecard";
}
4

1 回答 1

2

我建议制作一个以 Context 作为参数的静态 getter。这样a)它将实际编译,并且b)如果您的base-url在某个时候发生更改,它将加载最新的值,而不是像您的程序一样在开始时加载一次:

private final static String PREFS = "myUrlPrefs";

public static String getBaseUrl(Context context) {
    return context.getSharedPreferences(PREFS, MODE_PRIVATE).getString(
        "Name of variable",urlPref);
}

您可以从这样的另一个活动中调用它:

String baseUrl = MyBaseUrlContainer.getBaseUrl(this);

或者从任何你可以访问这样的上下文的地方(一个活动就是一个上下文):

String baseUrl = MyBaseUrlContainer.getBaseUrl(myContext);

如果您绝对必须从无法访问 Context 的地方使用此代码(在 Android 应用程序中几乎永远不会出现这种情况),您可以在检索到该值后存储该值,但第一次获得它必须来自上下文的值。

于 2013-04-14T15:00:57.063 回答