如何将首选项值转换为静态String变量?

时间:2013-04-14 14:45:51

标签: java android android-activity

我收到以下错误消息:

  

“无法对非静态方法进行静态引用   来自类型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";
}

1 个答案:

答案 0 :(得分: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应用中几乎不会出现这种情况),您可以在检索后存储该值,但这是第一次你从上下文中得到它必须具有的价值。