Wie erhalte ich die Ressourcen-ID eines Bildes, wenn ich seinen Namen kenne?

Wie erhalte ich die Ressourcen-ID eines Bildes, wenn ich seinen Namen kenne (in Android)?

   

Mit so etwas:

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

Sie können dies auch versuchen:

 try { Class res = R.drawable.class; Field field = res.getField("drawableName"); int drawableId = field.getInt(null); } catch (Exception e) { Log.e("MyTag", "Failure to get drawable id.", e); } 

Ich habe diesen Quellcode von unten URL kopiert. Basierend auf Tests auf dieser Seite ist es 5 mal schneller als getIdentifier (). Ich fand es auch handlicher und einfacher zu benutzen. Hoffe es hilft dir auch.

Link: Ressourcen dynamisch in Android abrufen

Beispiel für eine öffentliche Systemressource:

 // this will get id for android.R.drawable.ic_dialog_alert int id = Resources.getSystem().getIdentifier("ic_dialog_alert", "drawable", "android"); 

aufmerksam

Eine andere Möglichkeit besteht darin, die Dokumentation für die class android.R.drawable zu beziehen.

Sie können diese function verwenden, um eine Ressourcen-ID zu erhalten:

 public static int getResourseId(Context context, String pVariableName, String pResourcename, String pPackageName) throws RuntimeException { try { return context.getResources().getIdentifier(pVariableName, pResourcename, pPackageName); } catch (Exception e) { throw new RuntimeException("Error getting Resource ID.", e) } } 

Wenn Sie also eine Drawable Resource ID erhalten möchten , können Sie die Methode wie folgt aufrufen:

 getResourseId(MyActivity.this, "myIcon", "drawable", getPackageName()); 

(oder aus einem Fragment):

 getResourseId(getActivity(), "myIcon", "drawable", getActivity().getPackageName()); 

Für eine String Resource ID kann man es so nennen:

 getResourseId(getActivity(), "myAppName", "string", getActivity().getPackageName()); 

etc…

Vorsicht : Es wird eine RuntimeException ausgetriggers, wenn die Ressourcen-ID nicht gefunden werden kann. Stellen Sie sicher, dass Sie sich in der Produktion ordnungsgemäß erholen.

Lesen Sie dies

Ein anderes Szenario, dem ich begegnet bin.

String imageName = “Hello” und dann, wenn es als erstes Argument in die function getIdentifier übergeben wird, übergibt es den Namen mit der Beendigung des Strings null und gibt immer null zurück. Übergeben Sie diesen imageNameString (0, imageName.length () – 1)