Ho provato questo:Utilizzando Android getIdentifier()
r = Resources.getSystem().getIdentifier("ball_red","drawable","com.Juggle2");
Log.i("FindBall","R = "+r);
E questo:
r = Resources.getSystem().getIdentifier("com.Juggle2:drawable/ball_red", null, null);
Ma 'r' finisce sempre come zero.
Sto chiamando questa linea da una classe helper che non è un'attività e non estende nulla, quindi non posso semplicemente chiamare getResources()
, ma posso passarlo dal mio SurfaceView
.
Eventualmente, desidero sostituire "ball_red"
con una variabile, ma la prima cosa è la prima. Questo non funziona
com.Juggle2
è davvero il mio nome del pacchetto. drawable
è la cartella res
in cui si trova e, il nome del file è effettivamente ball_red
.
R.java dice:
public static final int ball_red=0x7f020027;
, quindi non sono sicuro perché non sta funzionando.
quindi non posso usare le risorse, devo passare un contesto, e sto facendo che in questo modo: All'interno qui:
class Collection extends SurfaceView implements SurfaceHolder.Callback {
Sto facendo una nuova istanza della mia classe e passandolo a getContext()
come parametro.
Come da documentazione di 'Resources.getSystem()': * "Restituisce un oggetto Risorse condivise globali che ** fornisce accesso solo alle risorse di sistema (nessuna risorsa applicazione) ** e non è configurato per la schermata corrente (può non utilizzare le unità di misura, non cambia in base all'orientamento, ecc.). * * Come risposta da @Sajmon, è necessario passare un'istanza di 'Context' al metodo di supporto (statico) per accedere alle risorse specifiche dell'applicazione. –
btw l'aspetto del tipo è case sensitive, ad es. "stringhe", "estraibile" e non "Stringhe" o "Disegnabile" –