2012-07-18 20 views
7

Metin görünümünde metin biçiminde ve biçim ve birden çok değerle ilgili sorun yaşıyorum. Android setText/R.string/değerleri

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

bu

bana veriyor "2143545 Camero 2143213 1977"

ben bile String.valueOf(R.string.mycar); getResources().getText(R.String.mycar) çalıştı

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

Web'den birkaç diğer "çözümler" denedim, yine de işe yaramadı . Birisi bana yardımcı olabilir harika olurdu

, teşekkür

+0

ne demek "hala çalışmıyorsa" geliyor? Ne bekliyorsunuz? – Blackbelt

+0

Çünkü .string.mycar' bir kaynak anlamına gelir. Bu gerçek kaynak değil. @ user1417127 'nin yanıtı güzel görünüyor. Gerçek dize kaynağını sizin için –

+0

context.getResources.getString (R.string.xyx) kullanın. – Kamal

cevap

14

deneyin bu

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

+0

dize değeri için "false" alıyorum ... –

+0

"false" ne demek istiyorsun ??? – user1417127

2

Öncelikle kaynaklarını almak zorunda ve çağrı medthod getString (int) değil, gettext , koydu mu.

Yani, bu olmalıdır:

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

bu deneyin. Eğer Activity uzatmadan sınıfta dize getirme ediyorsanız .. Bu size yardımcı olur senin Context

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

Eğer uzanan ediyorsanız Activity

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

Umut kullanarak alın

+0

"context" yerine getActivit() 'yazabilir miyiz? Herhangi bir sorun var mı – mehmet

+0

@mehmet İhtiyacınıza bağlıdır. [Buradaki belge] 'yi okuyun (http://developer.android.com/reference/android/app/Fragment.html#getActivity()) – Praveenkumar

3

R.string.mycar ve R.string.year kaynaklar için sadece kimliklerdir. Bu nedenle rakamları (ID'ler sayısal) alırsınız.

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

ve şimdi MyCar değişken, mycar adı altında strings.xml dosyasında koymak dize tutan:

bu inşaat kullanmaya gerek kaynaklardan dize almak için.

getResources() yöntemi Bağlam öğesine aittir. Bir Faaliyet dışında kod çalıştırmasına, bu gibi dize almak için bağlam örneğini kullanın:

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

R sınıfı sizin ressources için işaretçiler tür içerir, doğrudan, kullanım GetResources bunları kullanamaz böylece () .getString(), diğerleri gibi.

9

Sanırım dizede parametreler kullanmaya çalışıyorsunuz.

bu deneyin:

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

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

Sen almalısınız:

Car: Camaro Yıl: 1977

1

Eğer TextView'un dizenizle sadece bir dize ayarlamak istiyorsanız.xml dosyası,

mytextview.setText(R.String.mycar); 

bazı dizeleri veya tamsayılar kombinasyonu ile TextView'un ayarlamak istiyorsanız, (ilk şekilde daha iyi)

int number=5; 

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

Benim için çalışıyor. Teşekkürler. –