私は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をラップするクラスを作成するのですか?
私が静的な命名法に苦しんでいる間、あなたの忍耐に感謝します。