2012-02-28 14 views
18

Projemde bazı görüntülerim var. Görüntünün adı bir String içinde saklanır ve setImageResource (R.drawable. "....."); görüntü isminin dizgisi ile ama sorun bu çalışmıyor.R.drawable nasıl değiştirilir "someString"

Bunu nasıl yapabilirim?

+0

Görüntüler nerede mevcut? – Deva

+0

Projemin çekilebilirliğinde. –

+0

Onun değil android bir yolu çalışmaları, Sen çekilebilir ve Büyük R.drawable.image – Newts

cevap

42

bu doğru bir sözdizimi değildir ve sen bilmelisin görüntü kaynağı değiştirmeden önce, derleyici zaman hata alıyorum gerekir, tüm kaynakların bir kimliği sağladı, bu kimlikleri R.java dosyası içine saklanır. Kimlikleri tamsayı biçime saklanır ve uygulamanızda değil ismen, bu kimliği bütün bu kaynakları getirebilir, bu yüzden tarafından, ilk başta kaynağın kimliği getirmesi gerekir: Bu Resid kullanmak sonra

String mDrawableName = "myimg"; 
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName()); 

ve .

+0

Harika, teşekkürler. –

10

Kullanım

getResources().getIdentifier("NAME_OF_IMAGE", "drawable", context.getPackageName()) 
+0

tarafından erişime onu görüntüleri depolamak zorunda, teşekkür ederim. –

2

bu thread bakınız. Sana yardım etmeli. Temel olarak, tanımlayıcıyı almanız ve setImageResource'u kullanarak yüklemeniz gerekir.

+0

Bilinmeyen downvoter, cevabımla ne kadar kötüyüm? –

+0

Harika, teşekkürler. –

+0

Hepinize olumlu oy verdim. –

1

public int getIdentifier (String name, String defType, String defPackage);

adı - resim
defType adı - bu dava için çekilebilir olacaktır
defPackage - Uygulamanızın varsayılan paket

0

deneyin (bunun için size aktivitesi üzerine getPackage() kullanabilirsiniz düşünüyorum) bu

String uri = "NAME"; 

    // int imageResource = R.drawable.icon; 
    int imageResource = getResources().getIdentifier(uri, null, getPackageName()); 

    ImageView imageView = (ImageView) findViewById(R.id.myImageView); 
    Drawable image = getResources().getDrawable(imageResource); 
    imageView.setImageDrawable(image); 
0

Görüntüyü 'çizilebilir' olan 'ham' klasöre taşıyarak ve aşağıdaki gibi dize değerine erişerek çalışıyorum. sağ 'ham' seçeneğini restorayon> new-> Android kaynak dizini ve resourcetype ait açılır menüsü altında tıklayın 'res' dizin altında 'ham' klasörünü yoksa.

String avatar = ("android.resource://" + "yourPackageName/" + String.valueOf(R.raw.robot_blue));