Теоретически, да, вы можете хранить целое число с ListPreference
.В конце концов, это пользовательский интерфейс, который отображает отображаемую пользователем метку / ключ (android:entries
) во внутреннее значение (android:entryValues
) и отображает все эти параметры отображения в виде списка.Это внутреннее значение может быть целым числом.Вы можете использовать <integer-array>
-ресурс для entryValues.
На практике я никогда не видел эту работу - она прослушивается .
Конечно, вы можете установить intзначение ключа предпочтения ListPreference
в вашем коде, поскольку это нормальное внутреннее предпочтение.Но это лишило бы цели назначение предопределенных массивов ресурсов и возможность выбора из списка.В качестве обходного пути, если int-массив будет полезен, я рекомендую использовать <string-array>
для значений и преобразовать их в целое число в коде, как вы это делали бы с вашей EditTextPreference
Check этот вопрос для нерабочего примера.;)
Чтобы ответить на ваш заглавный вопрос, какой из них выбрать для целого числа: Зависит.
Вы можете использовать любой из них в качестве обходного пути.
Если пользователь должен иметь возможность ввести любое значение (или просто много значений), EditTextPreference
- это путь.ListPreference
будет слишком длинным.
Если у вас небольшой набор предопределенных целых, используйте ListPreference
.Это намного удобнее в использовании и может отображаться с полезными ярлыками.Пример: если пользователь должен выбрать временной интервал, вы можете отобразить секунды в значении и отобразить другую метку, например, час [значение 3600;ярлык «Час»].
Редактировать: Также есть идея, где может быть связан ваш фрагмент кода.Поскольку ListPreference
не указывает ни android:entries
, ни android:entryValues
, он может быть просто частью файла настроек по умолчанию.Вы можете использовать PreferenceManager.setDefaultValues()
с файлом XML для сброса / инициализации всех ваших ключей настроек.В этом случае вы выбираете абсолютно случайное предпочтение, потому что все поля, которые учитываются, равны android:key
и android:defaultValue
.Вы можете использовать любой другой тип в этом случае, не имеет значения.