PreferenceActivityを拡張し、アプリの設定画面を表示するクラスがあります。設定に変更が加えられたかどうかを確認することはできますか?
これは役立ちます...
その他の関連記事: SharedPreferences.onSharedPreferenceChangeListenerが一貫して呼び出されていない
public class PreferenceClass extends PreferenceActivity {
OnSharedPreferenceChangeListener listener;
public void onCreate(Bundle savedInstanceState) {
SharedPreferences prefs = this.getSharedPreferences("settings", 0);
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
int flag = 1;
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
super.onCreate(null);
addPreferencesFromResource(R.xml.settings);
}
}
行う
_SharedPreferences.OnSharedPreferenceChangeListener spChanged = new
SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
// your stuff here
}
};
_
PreferenceActivity
で、つまりPreferenceActivity
クラスのメンバーにして、registerOnSharedPreferenceChangeListener(spChanged)
メソッドでPreferenceActivity.onCreate()
を実行します。
それが私がしていることであり、問題はありません。
それ以外の場合、リスナーに障害が発生するのは条件チェックです。コードを投稿してください。
編集:
投稿したコードから、prefs
をクラスメンバー変数にして、グローバルスコープを持つようにする必要があります。
また、getSharedPreferences
の代わりにprefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
を実行します。これは、そのファイルを作成していないためです。
ファイルを作成するには、PreferenceManager
を使用する必要があります。 PreferenceManager
を取得するには、Activity.getPreferenceManager()
を使用します。
PreferenceActivity
クラスで、SharedPreferences.OnSharedPreferenceChangeListener
インターフェイス。必要なonSharedPreferenceChanged
メソッドをクラスに追加し、onCreate
に登録します。
こちらのサンプルコードをご覧ください。
public class MyPreferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.fw_preferences); //deprecated
PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// handle the preference change here
}
}