0

SharedPreferences からいくつかの値を取得するカスタム クラスを作成しようとしました。私の目標は、どのクラスからでもその値に到達することです。

null ポインター例外が発生しています

 SharedPreferences prefs = getApplicationContext().getSharedPreferences("UserFile", MODE_PRIVATE);

私のコードは次のとおりです。

public class UserInfo extends Application {

    private String token;
    private String SAVED_USERNAME;

    public UserInfo() {
        SharedPreferences prefs = getApplicationContext().getSharedPreferences("UserFile", MODE_PRIVATE);
        token = prefs.getString("Token", null);
    }

    public String getToken() {
        return token;
    }
}

何が間違っている可能性がありますか?

4

6 に答える 6

0

Androidにはルールがあります-アプリコンポーネントのコンストラクターを使用しないでください:アクティビティ/フラグメント/アプリケーション/サービス...コンストラクターコンテキストではnullになるため、onCreate()メソッドがあります。コードを onCreate() に移動します。また、マニフェストで UserInfo をアプリケーションとして設定する必要があります。

于 2015-09-22T08:23:37.027 に答える
0

このクラスが AndroidManifest.XML ファイルに登録されていることを確認してください。

<application android:name=".UserInfo"
    ...
/>

注:共有設定にアクセスする方法が適切ではないようです。私はむしろ自分で名前付きのクラスを宣言し、PreferencesHelperそこにすべての設定を入れます。

public class PreferencesHelper{
    private SharedPreferences mPrefs;

    public PreferencesHelper(Context context){
        this.mPrefs = context.getSharedPreferences("name", Context.MODE_PRIVATE);
    }

    public getToken() {
        return mPrefs.getString("Token", null);
    }

    public String setToken(String token) {
        mPrefs.edit().putString("Token", token).apply();
    }
}
于 2015-09-22T08:23:46.617 に答える