3

ユーザーが個人設定アクティビティの ListPreference から特定の項目を選択したときに、ダイアログを表示したいと考えています。しかし、 onSharedPreferenceChanged() を機能させることができません。メソッドの先頭に Toast を配置しましたが、それが表示されないため、メソッドが実行されません。これはなぜですか?

これが私のコードです:(ありがとう)

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
        String key) {

    Toast.makeText(Preferences.this, "prefs Changed", Toast.LENGTH_SHORT)
            .show();

    if (key.equals("boolean_ad_type")) {

        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        String value = sharedPreferences.getString("boolean_ad_type", "");
        if (value != null && value.equals("Pop-up Ads")) {

            Toast.makeText(Preferences.this, "Pop-up Ads Selected",
                    Toast.LENGTH_SHORT).show();
        }

    }
}

そして、このようなアクティビティでそれを実装する必要がありますか? (私はあり、なしで試しましたが、違いはありません)

    public class Preferences extends PreferenceActivity 
                  implements OnSharedPreferenceChangeListener {
4

2 に答える 2

8

onSharedPreferenceChangedは、別のアクティビティで変更が発生した場合に発生しませんか?

public class MyActivity extends PreferenceActivity implements
    OnSharedPreferenceChangeListener {

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

@Override
protected void onPause() {
    super.onPause();
    // Unregister the listener whenever a key changes
    getPreferenceScreen().getSharedPreferences()
            .unregisterOnSharedPreferenceChangeListener(this);
}
于 2013-01-17T19:08:10.513 に答える
0

ダイアログを表示したい特定のプリファレンスに対してクリックリスナーを設定する必要がありますonCreate

PreferenceScreen ps2 = (PreferenceScreen) findPreference("ic_vol");
    ps2.setOnPreferenceClickListener(this);
于 2013-01-17T19:08:36.697 に答える