Ich habe dies versucht:Mit Android getIdentifier()
r = Resources.getSystem().getIdentifier("ball_red","drawable","com.Juggle2");
Log.i("FindBall","R = "+r);
Und:
r = Resources.getSystem().getIdentifier("com.Juggle2:drawable/ball_red", null, null);
Aber 'r' immer als Null landet.
Ich rufe diese Linie von innerhalb einer Helfer-Klasse, die keine Aktivität ist und nichts erweitert, so dass ich nicht getResources()
anrufen kann, aber ich kann es aus meiner SurfaceView
übergeben.
Schließlich möchte ich "ball_red"
durch eine Variable ersetzen, aber das erste Ding ist zuerst. Dies funktioniert nicht.
com.Juggle2
ist in der Tat mein Paketname. drawable
ist der res
Ordner, in dem es sich befindet, und der Name der Datei ist in der Tat ball_red
.
R.java sagt:
public static final int ball_red=0x7f020027;
Also ich bin nicht sicher, warum es nicht funktioniert.
So kann ich nicht Ressourcen verwenden, muss ich einen Kontext passieren, und ich, dass diese Art und Weise: Innen hier:
class Collection extends SurfaceView implements SurfaceHolder.Callback {
Ich mache eine neue Instanz meiner Klasse und übergibt es getContext()
als Parameter.
Laut Dokumentation von 'Resources.getSystem()': * "Zurückgeben eines globalen Objekts für freigegebene Ressourcen, das ** Zugriff auf Systemressourcen (keine Anwendungsressourcen) ** bereitstellt und nicht für den aktuellen Bildschirm konfiguriert ist (can keine Maßeinheiten verwenden, ändert sich nicht basierend auf der Ausrichtung usw.) "* Wie von @Sajmon beantwortet, müssen Sie eine' Context'-Instanz an Ihre (statische) Hilfsmethode übergeben, um auf anwendungsspezifische Ressourcen zuzugreifen. –
vom Typ-Aspekt wird die Groß- und Kleinschreibung berücksichtigt, z. "Strings", "Drawable" und nicht "Strings" oder "Drawable" –