- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了一个简单的PreferenceScreen,如下所示:
public class SettingsActivity extends PreferenceActivity implements OnPreferenceChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
PreferenceScreen prefScreen = getPreferenceScreen();
prefScreen.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference.getTitle().equals(getString(R.string.settings_diverse_about))) {
// TODO open about dialog
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
private static String PATTERN_EMAIL = "[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}";
private static String PATTERN_TWITTER = "[a-zA-Z0-9_-]+";
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String prefTitle = preference.getTitle().toString();
// phone will be fully handled by inputType
String newStr = newValue.toString();
if (prefTitle.equals(getString(R.string.settings_contact_email))) {
return newStr.trim().matches(PATTERN_EMAIL);
} else if (prefTitle.equals(getString(R.string.settings_contact_twitter))) {
return newStr.trim().matches(PATTERN_TWITTER);
}
return true;
}
问题是,永远不会调用 onPreferenceChange 方法。此外,您如何看待验证属性的方式?我认为这并不是最佳选择。
preference.getTitle().equals(getString(R.string.settings_diverse_about))
最佳答案
我遇到了同样的问题。我试图设置一个 onPreferenceChangeListener 但那是错误的。我真正需要的是一个 onSharedPreferenceListener。
OnSharedPreferenceChangeListener listener;
将此写在您的 Preference Activity 的 onCreate() 中:
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// Here you can work.
// IMPORTANT: Beware that at this point the preference has already been changed!
}
};
SharedPreferences prefs = getSharedPreferences(getPackageName() + "_preferences", MODE_PRIVATE);
prefs.registerOnSharedPreferenceChangeListener(listener);
关于未调用 Android PreferenceScreen onChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8157217/
是否可以仅在软键盘输入数字时为 numberPicker 设置 onChangeListener?当数字更改为 gy +/- 时,不应执行监听器。仅当用户从软键盘输入数字时。 目标是在用户在前一个项目
我写了一个简单的PreferenceScreen,如下所示: public class SettingsActivity extends PreferenceActivity implements O
我正在尝试重置 ComboBox 的选择,如下所示: // private ListView f_lItems f_lItems.getSelectionModel().selectedItemPro
我用 XML 创建了一个 RadioGroup 布局。所以我动态创建它: RadioGroup segmentRadioGroup = new RadioGroup(parentActivity);
我有以下代码: nameOfInf.setOnFocusChangeListener(new OnFocusChangeListener() { if (strTollAmount.lengt
我有这段代码来为 Range Bar 库 实现监听器: rangebar.setOnRangeBarChangeListener(new RangeBar.OnRangeBarChangeListen
我是一名优秀的程序员,十分优秀!