2012-08-12 17 views
11

Chcę uzyskać identyfikator zasobu zasobu Androida, który zapisałem w folderze/res/raw.Android: Jak uzyskać identyfikator zasobu zasobów Androida

Zastosowanie -

1) Jestem przekazując nazwę zasobu do klasy i nazwa ta jest zapisana w ciąg fileNeme.

2) Instrukcja uzyskiwania tego pliku to this.getResources().openRawResource(R.raw.xyz), gdzie xyz jest rzeczywistą nazwą pliku.

3) Rozumiem, że metoda openRawResource (int) przyjmuje wartość int, dlatego nie mogę użyć instrukcji jako this.getResources().openRawResource(R.raw.filename), gdzie nazwa pliku jest zmienną łańcuchową zdefiniowaną powyżej.

Problem: Znam nazwę pliku, która jest zapisana w łańcuchu o nazwie filename, ale nie mogę go otworzyć, ponieważ metoda pobiera identyfikator zasobu w formacie int.

Potrzebuję pobrać identyfikator zasobu tej nazwy pliku i zapisać go w zmiennej int nazwa_pliku i przekazać tę zmienną do metody openRawResource.

Proszę dać mi znać, w jaki sposób mogę to osiągnąć.

Odpowiedz

34

Powinieneś być w stanie uzyskać identyfikator zasobów z getIdentifier():

int id = this.getResources().getIdentifier("xyz", "raw", this.getPackageName()); 
+0

Dzięki ton jego pracy teraz. – user1576339

+1

dziękuję! Aby ocalić następnego faceta jakiś czas, parametr "xyz" jest dokładnie tym, którego potrzebujesz dla pliku xml. Poza tym nie masz nic przed lub po nim. Nie "res /" lub "@raw" itd .. po prostu wyczyść xyz – Ohiovr

+2

Również "xyz" nie powinien zawierać żadnego sufiksu. na przykład Surowy zasób myfile.json byłby po prostu "myfile". –

Powiązane problemy