2010-01-14 17 views
16

Wystarczy szybki numerek,Get tablicę liczb całkowitych od zasobu XML w programie Android

Mam zasobu xml w RES/wartości/integers.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer-array name="UserBases"> 
      <item>2</item> 
      <item>8</item> 
      <item>10</item> 
      <item>16</item> 
    </integer-array> 
</resources> 

i ive próbował kilka rzeczy do niego dostęp :

int[] bases = R.array.UserBases; 

to właśnie zwraca int i odniesienie do UserBases nie tablica sobie

int[] bases = Resources.getSystem().getIntArray(R.array.UserBases); 

i to zgłasza wyjątek na mnie mówi mi punkty R.array.UserBases int referencyjne nic

co jest najlepszym sposobem, aby uzyskać dostęp do tej tablicy, wcisnąć go w ładny baza typu int [] a następnie ewentualnie wepchnąć wszelkie modyfikacje z powrotem do zasobu xml.

Sprawdziłem dokumentację Androida, ale nie znalazłem nic okropnie owocnego.

Odpowiedz

55

Musisz użyć zasobów, aby uzyskać tablicę int; jednak używasz zasobów systemowych, które obejmują tylko standardowe zasoby Androida (np. dostępne przez android.R.array.*). Aby uzyskać własne zasoby, musisz uzyskać dostęp do zasobów za pośrednictwem jednego z kontekstów.

Na przykład, wszystkie działania są konteksty, więc w działaniu można to zrobić:

Resources r = getResources(); 
int[] bases = r.getIntArray(R.array.UserBases); 

Dlatego jest to często przydatne przejść wokół kontekstu; będziesz potrzebować go, by zdobyć zasoby aplikacji.

+0

Fajne ziarna! Wielkie dzięki. także w jaki sposób najlepiej dodawać i usuwać elementy z tablicy (zapisać edycję surowego xml) - zasadniczo aktualizując wszelkie zmiany z int [] do xml. – JERiv

+0

Nie jestem pewien, czy można zaktualizować xml z kodu; wszystkie zasoby xml są kompilowane do postaci binarnej podczas budowania pliku APK. Powinieneś zadać nowe pytanie, może ktoś inny wie. –

+3

Daniel ma rację, nie możesz tego zrobić. – James

Powiązane problemy