Android: ціле число з ресурсу xml


110

Як мені потрібно змінити свої XML-ресурси або який XML-файл, який я маю створити, щоб отримати доступ до цілих значень таким же чином, як і для доступу до рядкових значень R.string.some_string_resource?

Наприклад, у коді я хочу сказати:

ProgressDialog progressBar = new ProgressDialog(getContext());
progressBar.setMax(getInteger(R.integer.maximum));

Це можливо?

Відповіді:


263

Так, можливо, це виглядатиме так:

  1. Створіть файл ресурсів xml у папці /res/values/під назвою integers.xml.

    Ви можете давати йому ім’я як завгодно, але вибирайте одне, що очевидно.

  2. У цьому файлі ресурсів створіть цілі значення.

    Тоді ваш файл виглядає приблизно так:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>    
        <integer name="maximum">100</integer>
        ...
    
    </resources>
  3. Посилайтеся на ціле значення в коді Java так:

    Це трохи відрізняється від того getString(), що вам доведеться трохи проїхати.

    ProgressDialog progressBar = new ProgressDialog(getContext());
    int max = getContext().getResources().getInteger(R.integer.maximum);
    progressBar.setMax(max);

1
Це подвійне значення, а не ціле число. Можливо, ви це запитаєте в окремому запитанні StackOverflow.
Террі

1
@ Terry Отож це кращий метод використання Integers в андроїді, я зазвичай жорстко кодую його в самому коді. Яка ваша рекомендація?
capt.swag

2
@ capt.swag Зазвичай ви встановлюєте цілі числа жорсткого коду як константи в коді кожного класу, якщо це доречно. Але якщо вам потрібно мати різні константи для різних макетів (тобто кількість стовпців для сітки), ви використовуєте XML-файли, щоб адаптувати цю константу до різної ширини екрана. Сподіваюся, що це допомагає
rommex

1
чи можу я використовувати це ціле значення безпосередньо в XML?
Arbaz.in

1
@ capt.swag так, саме такий спосіб є кращим
Бато-Баїр Циренов,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.