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 更改。

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 回答