Android: liczba całkowita z zasobu xml


110

Jak mam zmodyfikować moje zasoby XML lub jaki plik XML muszę utworzyć, aby uzyskać dostęp do wartości całkowitych w taki sam sposób, w jaki uzyskuje się dostęp do wartości ciągu R.string.some_string_resource?

Na przykład w kodzie, który chcę powiedzieć:

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

Czy to możliwe?

Odpowiedzi:


263

Tak, jest to możliwe, wyglądałoby to tak:

  1. Utwórz plik zasobów xml w folderze o /res/values/nazwie integers.xml.

    Możesz nadać mu dowolną nazwę, ale wybierz taką, która jest oczywista.

  2. W tym pliku zasobów utwórz wartości całkowite.

    Twój plik wygląda wtedy mniej więcej tak:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>    
        <integer name="maximum">100</integer>
        ...
    
    </resources>
  3. Odwołaj się do wartości całkowitej w kodzie Java w następujący sposób:

    Trochę różni się od tego getString(), musisz trochę objechać.

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

1
To podwójna wartość, a nie liczba całkowita. Może zadasz to w osobnym pytaniu StackOverflow.
Terry

1
@Terry Więc jest to preferowana metoda używania liczb całkowitych w Androidzie, zwykle koduję ją na stałe w samym kodzie. Jaka jest Twoja rekomendacja?
capt.swag

2
@ capt.swag Zwykle zapisujesz na stałe liczby całkowite jako stałe w kodzie każdej klasy, stosownie do potrzeb. Ale jeśli potrzebujesz różnych stałych dla różnych układów (tj. Liczby kolumn dla siatki), użyjesz plików XML, aby dostosować tę stałą do różnych szerokości ekranu. Mam nadzieję, że to pomoże
rommex

1
czy mogę użyć tej liczby całkowitej bezpośrednio w XML?
Arbaz w

1
@ capt.swag tak, to preferowana metoda
Bato-Bair Tsyrenov

5

Musisz dodać plik integers.xml do swojego projektu

wprowadź opis obrazu tutaj

i wtedy

wprowadź opis obrazu tutaj

aw integers.xml dodaj to

<integer name="maximum">5</integer>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.