2011-12-29 23 views
5

Uygulamamda bir sonuç kodu döndüren bir web isteği yapıyorum, ör. 105. Ben r+resultCode kaynak tanımlayıcı iken Şimdi bununAndroid dinamik Dize Kaynaklar

Toast.makeText(parent.getApplicationContext(), 
     parent.getString(R.string.r+resultCode), Toast.LENGTH_LONG).show(); 

böyle bir şey yapmak istiyorum

<string name="r105">O.K.</string> 
<string name="r106">Something went wrong.</string> 
<string name="r333">Fatal error.</string> 

gibi bakmak dize kaynakları var.

Bu işe yaramıyor. Nasıl yapılacağı hakkında bir fikrin var mı?

+0

Yukarıdaki kodda r105 olarak kaynak kullandınız, ancak erişirken eriştiğinizde R.string.r doğru mu? –

+0

Şimdi sorunuzu anladım, 5 dakika vereceğim. –

cevap

13

Bunu basit bir şekilde getResources().getIdentifier(name, defType, defPackage) deneyin.

Toast.makeText(this, getResources().getIdentifier("r"+resultcode, "string", 
getPackageName()), Toast.LENGTH_LONG).show(); 
+0

mükemmel, teşekkürler! –

0

Aşağıdaki şekilde deneyin, benim için çalışıyor. Sizin için parent.getApplicationContext() kullanın.

String str = getString(R.string.r)+resultCode; 

     Toast.makeText(getApplicationContext(), 
       str, Toast.LENGTH_LONG).show(); 
+1

Bence getString (R.string.r) + resultCode işe yaramaz çünkü "r" –

+0

diye bir kaynak yok. Sadece kodumun bir parçasını verdim, tüm şeyi değil. Projemde xml dosyasında kullandım. –

+0

@ArtWorkAD benim önerim sizin için çalışıyor mu? –

4

getResources().getIdentifier(name, defType, defPackage) kullanarak yapabilirsiniz. Böyle bir şey:

// Assuming resultCode is an int, use %s for String 
int id = getResources().getIdentifier(String.format("r%d", resultCode), 
             "string", getPackageName()); 
String result = getString(id); 
+0

Bir hata alıyorum "% d java.lang.String argümanlarını biçimlendiremiyor" –

+2

Ah, resultCode diye düşündüm int Dize için% s deneyin veya sadece "r" + resultCode yapın. – aspartame

0

Dizgeden kaynak kimliğini almanın basit bir yolu. Burada resourceName, XML dosyasında da yer alan çizilebilir klasördeki ImageView kaynağının adıdır. "String" aldığınızda "string" kullanabilirsiniz.

int resID = getResources().getIdentifier(resourceName, "id", getPackageName()); 
ImageView im = (ImageView) findViewById(resID); 
Context context = im.getContext(); 
int id = context.getResources().getIdentifier(resourceName, "drawable", 
context.getPackageName()); 
im.setImageResource(id);