Uso de Android getIdentifier ()

He intentado esto:

r = Resources.getSystem().getIdentifier("ball_red","drawable","com.Juggle2"); Log.i("FindBall","R = "+r); 

Y esto:

 r = Resources.getSystem().getIdentifier("com.Juggle2:drawable/ball_red", null, null); 

Pero 'r' siempre termina como cero.

Estoy llamando a esta línea desde dentro de una clase de ayuda que no es una actividad y no se extiende nada, por lo que no puedo simplemente llamar getResources() , pero puedo pasar de mi SurfaceView .

Eventualmente, quiero reemplazar "ball_red" con una variable, pero lo primero es lo primero. Esto no funciona.

com.Juggle2 es mi nombre de paquete. drawable es la carpeta res que está, y, el nombre del archivo es de hecho ball_red .

R.java dice:

  public static final int ball_red=0x7f020027; 

Así que no estoy seguro de por qué no está funcionando.


Así que no puedo usar los recursos, debo pasar un contexto, y lo estoy haciendo de esta manera: Dentro de aquí:

 class Collection extends SurfaceView implements SurfaceHolder.Callback { 

Estoy haciendo una nueva instancia de mi clase y pasar it getContext() como un parámetro.

Ya que estás dentro de una actividad es suficiente escribir

 int resId=YourActivity.this.getResources().getIdentifier("ball_red", "drawable", YourActivity.this.getPackageName()); 

O si no lo está llamando desde una clase interna

 int resourceID = getResources().getIdentifier("ball_red", "drawable", getPackageName()); 

Nota

 getIdentifier() Returns 0 if no such resource was found. (0 is not a valid resource ID.) 

Comprobar

Compruebe también en su R.java si hay un drawable con el nombre ball_red

p.ej:

 public static final class drawable { public static final int ball_red=0x7f020000; } 

EDITAR Si no estás en ninguna actividad, entonces debes pasar un context instead of resources as parameter , haz esto

 int resId=context.getResources().getIdentifier("ball_red", "drawable", context.getPackageName()); 

Para los usuarios de Xamarin tuve el problema de que había añadido un icono con letras mayúsculas y minúsculas (por ejemplo, iconVaccine.png) y se estaba refiriendo al nombre de usuario nombre iconVaccine.

Xamarin le permitirá hacer esto (aunque no debería), pero cuando la aplicación se compila el nombre se aplastan en minúsculas, por lo que debe referirse a la variante en minúsculas de la siguiente manera:

Nombre de la imagen: iconVaccine.png

Referencia de Xamarin: iconVaccine (como creada en Resource.designer.cs, pero fallará)

Referencia correcta: iconvaccine

¡Espero que ayude!

Aunque la respuesta de Festus Tamakloe es correcta encontré un capricho en esta función.

Si está declarando una string-array en un archivo xml, debe acceder a ella llamando a la array tipo de recurso base, utilizando string-array resultados de la string-array de cadenas en anid 0 return.

  • SearchView y título de la actividad en ActionBar
  • ¿Es posible registrar un receptor en un caso de prueba?
  • MediaController - Error cuando se muestra Show ()
  • Compruebe si una cadena es un número
  • Insertar} para completar el error de ClassBody incluso con paréntesis coincidentes
  • Cómo ejecutar la aplicación Java en Android
  • Eclipse se bloquea con límite de gastos generales de GC superado después de enlazar servicios de Google Play
  • Defectos de Android Paint ()
  • ¿Métodos personalizados en la solución RealmObjects ...?
  • Usando HttpClient y HttpPost en Android con parámetros post
  • ¿Qué versiones de GLSL puedo usar en OpenGL ES 2.0?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.