4

PreferenceActivity の設定の変更をメイン アクティビティに通知しようとしていますが、設定を変更しても onSharedPreferenceChanged が起動しません。

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    prefs.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener()
    {   
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
        {
            Log.d("Dict", "PreferenceChanged: " + key);
        }
    });
4

2 に答える 2

6

私の推測では (よくある間違いなので) でリスナーをonResume()登録し、 で登録を解除していると思いますonPause()。これにより、リスナーが発火するのを防ぎます。それが起こっている場合は、コードを変更して、その間に登録し、その間onCreate()に登録を解除onDestroy()すると、問題が解決します。

于 2012-12-14T18:00:30.380 に答える
2

このコードを使用して、彼のキーに応じて現在の設定値が変化するものを見つけます

public class SharedPreferences は OnSharedPreferenceChangeListener を実装します {

@Override
public void onSharedPreferenceChanged(
        android.content.SharedPreferences sharedPreferences, String key) {
    // TODO Auto-generated method stub

    sharedPreferences.getBoolean(key, defValue);
    sharedPreferences.getFloat(key,defValue);
    sharedPreferences.getInt(key, defValue);
    sharedPreferences.getString(key, defValue);
    sharedPreferences.getString(key, defValue);
}

}

于 2012-12-14T16:51:54.227 に答える