Подтвердить что ты не робот

Предпочтения в предпочтении в Android-приложении

Что я хочу сделать, так это то, что я работаю над игрой жизненной программы. Я хочу принять задержка и сделать это предпочтение, но я хочу, чтобы люди могли вводить их в определенное время. Номер может быть в миллисекундах или секундах.

Однако я немного зациклен на том, как действовать дальше, я не смог найти простого предпочтения, которое уже обрабатывает это, но может быть и одно. Есть ли простой способ сделать это предпочтение и подтвердить, что введенные данные являются целыми или плавущими?

4b9b3361

Ответ 1

Если вы используете 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);

}

Ответ 2

Используйте EditTextPreference и установите тип ввода в TYPE_CLASS_NUMBER. Это заставит пользователя вводить цифры, а не буквы.

EditTextPreference pref = (EditTextPreference)findPreference("preference_name");
pref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);

Ответ 3

Вы также можете применить его с атрибутом xml android:numeric. Возможные значения для этого атрибута: decimal и integer.

Ответ 4

Вы также можете сделать это прямо в своем preferences.xml. Что-то вроде этого будет работать:

<EditTextPreference
    android:defaultValue="100"
    android:dialogTitle="@string/pref_query_limit"
    android:inputType="number"
    android:key="pref_query_limit"
    android:summary="@string/pref_query_limit_summ"
    android:title="@string/pref_query_limit" />