我已经创建并上课来管理我的偏好:
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" />
谢谢
答案 0 :(得分: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()
方法中。
答案 1 :(得分:1)
您使用registerOnSharedPreferenceChangeListener
注册更改,每次更改偏好时都会调用onSharedPreferenceChanged
。如果您只想注册所选首选项,请按DigCamara
回答。