2011-11-12 14 views
23

W mojej klasie java chcę użyć zasobu napisowego z pliku strings.xml.android jak korzystać z zasobów ciągów w klasie java

za które muszę używać jak poniżej,

getString(R.string.address) 

jeśli moja klasa jest działalnością wówczas jej piersiach. Ale moja klasa to prosta klasa java, jak mogę jej użyć?

Czy to możliwe? Dziękujemy

+0

Jeśli Twój projekt jest projektem Android, możesz go używać. Czy próbowałeś go? spróbuj go użyć, a następnie powiedz nam. –

+4

Jestem ciekawa, jaka była twoja logika, kiedy przyjąłeś odpowiedź, którą zrobiłeś. –

+0

+1 (12 dalszych działań) – MKJParekh

Odpowiedz

30

Klasa nie ma kontekstu i korzystać z zasobów ciąg potrzebny jest kontekst. Dlatego po prostu wywołaj klasę z działania i podaj parametr context, a wewnątrz konstruktora klasy użyj tego kontekstu, aby pobrać zasób ciągów.

W swojej klasie niestandardowej należy zaimportować przestrzeń nazw R dla projektu, aby uzyskać identyfikator zasobu.

import com.myrandomapp.R; 

Następnie, aby uzyskać rzeczywisty ciąg

context.getString(R.string.COOL_STRING) 
+13

Ta odpowiedź jest niekompletna - Aby ukończyć dla tych, którzy nadal mają pytania, należy zaimportować przestrzeń nazw R dla projektu, aby uzyskać identyfikator zasobu. przykład) importuj com.myappdomain.R (WYKORZYSTAJ SWOJĄ NAZWĘ TUTAJ) Następnie, aby uzyskać rzeczywisty ciąg context.getString (R.string.SOME_STRING) –

+1

@AndroidAddict +1 dla Ciebie, oszczędzasz mi bólu głowy! – Mirko

+0

@AndroidAddict +1. Powinieneś edytować odpowiedź – Br0thazS0ul

16

Możesz przekazać kontekst klasy Activity do klasy Java i uzyskać dostęp do zasobów.

Od swojej klasie Aktywny

Helper helper = new Helper(this); 

klasie Java

public class Helper { 

    Helper(Context c){ 
     c.getString(R.string.address); 
    } 
} 
8

Można utworzyć statyczny Application Context w Twojej Application klasę

public class App extends Application{ 

    private static Context mContext; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mContext = getApplicationContext(); 
    } 

    public static Context getContext(){ 
     return mContext; 
    } 
} 

Następnie wystarczy zadzwonić App.getContext().getResources() uzyskać żadnych wartości zasobów .

Pamiętaj tylko, że ten Context jest typu Application, więc są rzeczy, których ta Context nie jest dobra w użyciu. Przeczytaj this, aby uzyskać więcej informacji.

0

Można zrobić jeśli dodać tę linię:

// this is the object itself, and idString is the ID String bound to the literal. 
this.getString(R.string.idString) 

Mam nadzieję komentarz pomaga!

Brs.

Powiązane problemy