我收到以下错误消息:
“无法对非静态方法进行静态引用 来自类型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";
}
答案 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应用中几乎不会出现这种情况),您可以在检索后存储该值,但这是第一次你从上下文中得到它必须具有的价值。