我学习 Java 大约 6 周,但仍在努力实现静态方法(以为我真的理解它,但这证明我错了!)。
我正在尝试使本地存储的键值对的值公开可用。这是我的初始代码:
public class Settings extends Activity implements OnClickListener {
public Settings(TextView loginText, TextView passwdText) {
super();
this.loginText = loginText;
this.passwdText = passwdText;
}
public static String getDriverNum() {
SharedPreferences sp = getSharedPreferences(DELEX_SP, MODE_PRIVATE); <---ERROR
String Login = sp.getString("KeyLgn", "No Login Found");
return Login;
}
当然,我得到一个错误“无法从类型 ContextWrapper 对非静态方法 getSharedPreferences(String, int) 进行静态引用”,所以我尝试将非静态方法包装在我自己的公共方法中,作为类似StackOverflow 的回答表明:
public class Settings extends Activity implements OnClickListener {
public Settings(TextView loginText, TextView passwdText) {
super();
this.loginText = loginText;
this.passwdText = passwdText;
}
public static String getDriverNum() {
String Login = getSharedPref().getString("KeyLgn", "No Login Found"); <-- SAME ERROR
return Login;
}
public SharedPreferences getSharedPref() {
SharedPreferences sp = getSharedPreferences(DELEX_SP, MODE_PRIVATE);
return sp;
}
但这只是导致了同样的错误,因为我还没有解决对非静态getSharedPreferences方法的调用。解决此问题的最佳方法是什么?是创建一个包装getSharedPreferences的类吗?
感谢您在我与静态命名法斗争时的耐心等待。