0

設定を管理するためのクラスを作成しました。

public class ConfigurationActivity extends PreferenceActivity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.preferences);
    }
}

構成でユーザー名を変更できますが、それが発生したときにもっと多くのことをしたいのですが、この方法を使用して設定を管理しているときにプロパティが変更されたことを検出する方法がわかりません。

変更したいプロパティを含む xml は次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <PreferenceCategory android:title="@string/dialog_based_preferences">

        <EditTextPreference
                android:key="user_name"
                android:title="@string/title_preferences_userName"
                android:summary="@string/summary_preferences_userName"
                android:dialogTitle="@string/title_preferences_userName" />

ありがとうございました

4

2 に答える 2

2

OnPreferenceChangeListenerインターフェイスを実装する必要があります。

あなたの宣言は次のように変わります

public class ConfigurationActivity extends PreferenceActivity implements 
   Preference.OnPreferenceChangeListener

そして、あなたは実装する必要があります

public boolean onPreferenceChange(Preference preference, Object newValue){
    //your code here
    return true;
}

もちろん、必ずしもこのクラスにインターフェイスを実装する必要はありませんが、例としては実装すると思います。

完全を期すために:Hoan Nguyen前述のように、メソッドを呼び出して、設定の変更のためにクラスを登録する必要があります。

Preference textPref = this.findPreference(R.id.user_name);
textPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
   @Override
   public boolean onPreferenceChange(Preference preference,
        Object newValue) {
    //Do stuff
   }
});

たとえば、あなたのonCreate()方法で。

于 2013-04-22T22:40:56.833 に答える
1

registerOnSharedPreferenceChangeListenerを使用して変更を登録するonSharedPreferenceChangedと、設定が変更されるたびに呼び出されます。DigCamara選択した設定のみに登録する場合は、回答として実行してください。

于 2013-04-22T22:48:12.697 に答える