1

を操作するためのクラスを作成しましたSharedPreferences。で、Activityアイテムを追加しようとすると、次のエラーが発生します...

06-05 17:01:53.950: E/AndroidRuntime(3488): FATAL EXCEPTION: main
06-05 17:01:53.950: E/AndroidRuntime(3488): java.lang.NullPointerException
06-05 17:01:53.950: E/AndroidRuntime(3488):     at com.xcxcxc.helpers.Prefs.init(Prefs.java:16)
06-05 17:01:53.950: E/AndroidRuntime(3488):     at com.xcxcxc.helpers.Prefs.addStringProperty(Prefs.java:30)
06-05 17:01:53.950: E/AndroidRuntime(3488):     at com.xcxcxc.usersadapter.SplashActivity$1.callback(SplashActivity.java:78)
06-05 17:01:53.950: E/AndroidRuntime(3488):     at com.xcxcxc.usersadapter.SplashActivity$1.callback(SplashActivity.java:1)

これは、を処理するための私のコードですSharedPreferences...

import android.content.Context;
import android.content.SharedPreferences;

public class Prefs {

    public static final String STORAGE_NAME = "ApplicationPrefs";

    private static SharedPreferences settings = null;
    private static SharedPreferences.Editor editor = null;
    private static Context context = null;

    public static void init(Context cntxt) {
        context = cntxt;
    }

    private static void init() {
        settings = context.getSharedPreferences(STORAGE_NAME, 0);
        editor = settings.edit();
    }

    /* String values */
    public static void addStringProperty(String name, String value) {
        if (settings == null || editor == null) {
            init();
        }
        editor.putString(name, value);
        editor.commit();
    }

    public static String getStringProperty(String name) {
        if (settings == null || editor == null) {
            init();
        }
        return settings.getString(name, null);
    }
}

これは私が呼び出しているコードですActivity...

Prefs.addStringProperty("client_id", "1JDkv9sdfj8sf63rjs");
4

4 に答える 4

0

Context が null のようです。addStringProperty(..) の前にコンテキストを設定します

Prefs.init(getApplicationContext());
Prefs.addStringProperty("client_id", "1JDkv9sdfj8sf63rjs");
于 2012-06-05T13:32:18.800 に答える
0

contextnullのようです。電話してみる

public static void init(Context cntxt)

最初

于 2012-06-05T13:32:36.283 に答える
0
settings = context.getSharedPreferences(STORAGE_NAME, 0);

このステートメントが NPE の原因である必要があります。
どのように、どこでinit(Context cntxt)メソッドを呼び出していますか。

コンテキスト オブジェクトが初期化されていない限り、NPE. 最初に修正します。

于 2012-06-05T13:32:36.403 に答える
0

contextおそらく null です。これが null ポインター例外が発生する理由です。

private static void init() {
    settings = context.getSharedPreferences(STORAGE_NAME, 0);
    editor = settings.edit();
}

最初に呼び出すpublic static void init(Context cntxt)か、null 値を処理します。

private static void init() {
    if(context != null){
       settings = context.getSharedPreferences(STORAGE_NAME, 0);
       editor = settings.edit();
    }
}
于 2012-06-05T13:32:36.897 に答える