2012-07-18 14 views
7

Mam problem z ustawianiem tekstu w widoku tekstowym z formatem i wieloma wartościami.Ustawienia AndroidText/R.string/wartości

holder.car.setText(R.string.mycar + lm.getCarName() + R.string.year + lm.getYear()); 

to daje mi "2143545 Camero 2143213 1977"

Próbowałem kilka innych "rozwiązań" z sieci

holder.car.setText(getString(R.string.mycar) + lm.getCarName() + getString(R.string.year) + lm.getYear()); << not work, getString undefine>> 

Próbowałem nawet String.valueOf(R.string.mycar); getResources().getText(R.String.mycar), nadal nie działa .

Byłoby wspaniale, jeśli ktoś może mi pomóc, dzięki

+0

co oznacza „nadal nie działa” znaczy? Czego oczekujesz? – Blackbelt

+0

To dlatego, że 'R.string.mycar' to' int', który odnosi się do zasobu. To nie jest rzeczywisty zasób. Odpowiedź @ user1417127 wygląda dobrze. To pobiera rzeczywisty zasób ciągów dla ciebie –

+0

użyj context.getResources.getString (R.string.xyx). – Kamal

Odpowiedz

14

Spróbuj

holder.car.setText(getResources().getString(R.string.mycar));

+0

Otrzymuję "false" dla wartości ciągu znaków ... –

+0

co masz na myśli, mówiąc "fałszywy" ??? – user1417127

2

Trzeba odzyskać swoje zasoby pierwszy i zadzwoń getString medthod (int), nie getText , położyłeś.

Tak, powinno być:

getResources().getString(R.String.mycar); 
2

Spróbuj tego. Jeśli pobieranie ciąg w klasie bez rozszerzania Activity Get używając Context

holder.car.setText(context.getResources().getString(R.string.mycar)); 

jeśli rozszerzenie Activity

holder.car.setText(yourActivity.this.getResources().getString(R.string.mycar)); 

nadzieję, że to pomaga ..

+0

zamiast "kontekstu" możemy napisać 'getActivit()'? czy jest jakiś problem – mehmet

+0

@mehmet To zależy od twojego wymagania. Przeczytaj [dokument tutaj] (http://developer.android.com/reference/android/app/Fragment.html#getActivity()) – Praveenkumar

3

R.string.mycar i R.string.year są tylko identyfikatorami dla zasobów. Z tego powodu otrzymujesz liczby (identyfikatory są numeryczne).

Aby uzyskać ciąg ze środków trzeba użyć tej konstrukcji:

String myCar = getResources().getString(R.string.mycar); 

i teraz zmienna myCar trzyma łańcuch można umieścić w pliku strings.xml pod nazwą MyCar.

Metoda getResources() należy do kontekstu. Jeśli prowadzisz swój kod poza aktywny, należy użyć instancji kontekstowego, aby uzyskać ciąg, tak:

String myCar = context.getResources().getString(R.string.mycar); 
0

Klasa R zawiera rodzaj wskaźników do ressources, więc nie można bezpośrednio je USE getResources () .getString(), jak mówią inni.

9

Myślę, że próbujesz użyć parametrów w łańcuchu.

Spróbuj tego:

<string name="mycar">Car: %1$s Year: %2$s</string> 

String mycar = getString(R.string.mycar); 
mycar = String.format(mycar, lm.getCarName(), lm.getYear()); 

Powinieneś dostać:

Car: Camaro Rok: 1977

1

Jeśli chcesz ustawić TextView tylko ciąg z łańcucha.plik xml,

mytextview.setText(R.String.mycar); 

Jeśli chcesz ustawić TextView z kombinacji niektórych ciągów liczb całkowitych lub (lepiej niż pierwszy sposób)

int number=5; 

mytextview.setText(getResources().getString(R.String.mycar) + " " +number + " " + getResources().getString(R.String.mysecondcar)); 
+0

to działa dla mnie. Dzięki. –