Android RegisterOnSharedReferenceChangeListener()在自定义视图中导致崩溃

Android RegisterOnSharedReferenceChangeListener()在自定义视图中导致崩溃,android,crash,sharedpreferences,android-preferences,android-custom-view,Android,Crash,Sharedpreferences,Android Preferences,Android Custom View,每当我尝试添加这一行时,它就会使我的应用程序崩溃。我是不是放错地方了 preferences.registerOnSharedPreferenceChangeListener(myActivity.this); 这是我的班级 class Simulation extends View { // I declare my program variables here public Simulation(Context context) { super(c

每当我尝试添加这一行时,它就会使我的应用程序崩溃。我是不是放错地方了

    preferences.registerOnSharedPreferenceChangeListener(myActivity.this);
这是我的班级

class Simulation extends View {

    // I declare my program variables here
    public Simulation(Context context) {
        super(context);
        // get the preferences
        SharedPreferences preferences = PreferenceManager
                .getDefaultSharedPreferences(context);
        preferences
                .registerOnSharedPreferenceChangeListener(myActivity.this);
        String storedPreference = preferences.getString("nPref", "0");
    }

    public void onSharedPreferenceChanged(
            SharedPreferences sharedPreferences, String key) {
        Log.i(TAG, "preferences changed!");
    }
}
谢谢

你喜欢这样吗

SharedPreferences.OnSharedPreferenceChangeListener prefListener = 
        new SharedPreferences.OnSharedPreferenceChangeListener() {
    public void onSharedPreferenceChanged(SharedPreferences prefs,
            String key) {
        if (key.equals("date")) {
        }
    }
};


关于答案,请注意,prefListener需要是一个类字段,而不是一个局部变量,否则它可能会被垃圾收集


卓越而优雅。我不知道这个存在。工作完美+谢谢。
preferences.registerOnSharedPreferenceChangeListener(prefListener);