То, что я хочу сделать, я работаю над игрой жизненной программы. Я хочу взять задержку и сделать ее предпочтением, но я хочу сделать ее доступной, чтобы люди ввели в определенное время. Число может быть в миллисекундах или секунды.
Однако я немного застреваю о том, как продолжить двигаться, я не смог найти простое предпочтение, которое уже обрабатывает это, но мог бы быть тот. Существует ли простой способ сделать это предпочтение и подтвердить, что вводимые данные являются целым числом или на плаву?
Если вы используете PreferenceActivity, что, скорее всего, так и есть, то такой компонент недоступен.
Вам нужно будет сделать что-то вроде этого:
/**
* Checks that a preference is a valid numerical value
*/
Preference.OnPreferenceChangeListener numberCheckListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
//Check that the string is an integer.
return numberCheck(newValue);
}
};
private boolean numberCheck(Object newValue) {
if( !newValue.toString().equals("") && newValue.toString().matches("\\d*") ) {
return true;
}
else {
Toast.makeText(ActivityUserPreferences.this, newValue+" "+getResources().getString(R.string.is_an_invalid_number), Toast.LENGTH_SHORT).show();
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get XML preferences
addPreferencesFromResource(R.xml.user_preferences);
//get a handle on preferences that require validation
delayPreference = getPreferenceScreen().findPreference("pref_delay");
//Validate numbers only
delayPreference.setOnPreferenceChangeListener(numberCheckListener);
}