Android – Ressource von @drawable String öffnen

Ich habe:

 String uri = "@ drawable / myresource.png";

Wie kann ich das in ImageView laden? this.setImageDrawable?

Wenn Sie wirklich mit einer Zeichenfolge arbeiten müssen, versuchen Sie Folgendes:

private void showImage() { String uri = "drawable/icon"; // 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); } 

Sonst würde ich dir empfehlen, mit R. * Referenzen wie folgt zu arbeiten:

 int imageResource = R.drawable.icon; Drawable image = getResources().getDrawable(imageResource); 

Erstens, tun Sie das nicht, da diese @drawable Syntax im Java-Code bedeutungslos ist. Verwenden Sie int resourceId=R.drawable.myresource .

Wenn Sie aus irgendeinem Grund einen Ressourcennamen getIdentifier() und die Ganzzahl-ID benötigen, verwenden Sie getIdentifier() für das Resources Objekt.

Sie können auch Ihre eigene Variable hinzufügen .. in meinem Fall scene.name zwischen ich folgte @ pflleidi Antworten. c steht für Kontext.

 String uri = "drawable/" + scene.name; int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName()); imageList.setImageResource(imageResource); 

Seit langem überfällig, aber mein Favorit ist es, den Kontext zu verwenden:

 context.getApplicationContext().getResources().getDrawable(R.drawable.placeholder_image) 

placeholder_image ist die ID der Ressource. In Ihrem Fall, R.drawable.myresource .

Kontext kann eine Aktivität oder die Anwendung sein. Wo auch immer Sie sich gerade befinden, verweist auf den Kontext, mit dem Sie den Kontext der Anwendung abrufen können.

Falls jemand anderes auf das Problem stoßen sollte, das ich hatte, lud ich den Image-Namen von JSON und brauchte dann den Identifier. Der zweite Parameter von getIdentifier kann auf “drawable” gesetzt werden. Dies ist eine kleine Variation von @ ali-ramli-ramli Antwort …

 String uri = details.getString("circle").toLowerCase(); int imageResource = context.getResources().getIdentifier(uri, "drawable", context.getPackageName()); Drawable image = context.getResources().getDrawable(imageResource); viewHolder.unit_circle.setImageDrawable(image); 

Ich hatte das gleiche Problem mit … dem veralteten usw. etc. Ich habe das so getriggers mit minimaler API 14 in Ordnung.

 ... ... ImageView imgPoster = viewCache.getImgPoster(resource); String uri = "drawable/" + film.getPoster(); int imageResource = context.getResources().getIdentifier(uri, null, context.getPackageName()); Drawable image = ContextCompat.getDrawable(context, imageResource); imgPoster.setImageDrawable(image); return convertView; ... ...