Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 调用onSharedPreferenceChanged而不更改任何首选项,并生成LiveWallper_Android_Andengine_Live Wallpaper - Fatal编程技术网

Android 调用onSharedPreferenceChanged而不更改任何首选项,并生成LiveWallper

Android 调用onSharedPreferenceChanged而不更改任何首选项,并生成LiveWallper,android,andengine,live-wallpaper,Android,Andengine,Live Wallpaper,我正在用andengine制作一张现场壁纸。问题在于设置屏幕。当我在预览屏幕中按下设置按钮时,会自动调用onSharedPreferenceChanged()方法。。我认为除非我改变一些偏好,否则这是不应该发生的。下面是我的实现。有人能告诉我我做错了什么吗 public class LiveWallpaperSettings extends PreferenceActivity implements OnSharedPreferenceChangeListener{ ListPreferenc

我正在用andengine制作一张现场壁纸。问题在于设置屏幕。当我在预览屏幕中按下设置按钮时,会自动调用onSharedPreferenceChanged()方法。。我认为除非我改变一些偏好,否则这是不应该发生的。下面是我的实现。有人能告诉我我做错了什么吗

public class LiveWallpaperSettings extends PreferenceActivity implements OnSharedPreferenceChangeListener{

ListPreference listPreferencespeed, listPreferenceConst, listPreferenceCld;
public static boolean mSettingsChanged = false;

@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.prefs);        
    listPreferencespeed = (ListPreference) findPreference("listPref");
    listPreferenceConst= (ListPreference) findPreference("listPrefConst");
    listPreferenceCld = (ListPreference) findPreference("listPrefCld");

}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {

    Log.e("LiveWallpaperSettings", "Key :- " + key);
    SharedPreferences customSharedPreference = getSharedPreferences(key, LiveWallpaperSettings.MODE_PRIVATE);
        SharedPreferences.Editor editor = customSharedPreference.edit();
        editor.putString("Speed",listPreferencespeed.getValue());
        editor.putString("Cld", listPreferenceCld.getValue());
        editor.putString("Const", listPreferenceConst.getValue());
        editor.commit();
        mSettingsChanged = true;

    Log.e("LiveWallpaperSettings", "Speed Value after setting " + customSharedPreference.getString("Speed", ""));
    Log.e("LiveWallpaperSettings", "Cloud Value after setting " + customSharedPreference.getString("Cld", ""));
    Log.e("LiveWallpaperSettings", "Constellations Value after setting " + customSharedPreference.getString("Constd", ""));
    Log.e("LiveWallpaperSettings", "mSettingsChanged " + mSettingsChanged);
}



@SuppressWarnings("deprecation")
@Override
protected void onResume() {
    super.onResume();
    // Set up a listener whenever a key changes
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}

@SuppressWarnings("deprecation")
@Override
protected void onPause() {
    super.onPause();
    // Unregister the listener whenever a key changes
    getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}



}

问题可能不在您发布的代码中,而是在设置侦听器的代码中。在代码中查找以下内容:
SharedReferences.RegisterOnSharedReferenceChangeListener(此)
并检查其是否正确放置。例如,如果设置侦听器,然后初始化值,则可能需要颠倒顺序