¿Cuándo y por qué se debe utilizar getResources ()?

Estoy empezando con Android dev y jugando.

La documentación de getResources () dice que [r]eturn a Resources instance for your application's package.

En los ejemplos de código que he visto esto se utiliza para acceder a los recursos en res , pero parece que sólo puede acceder a ellos directamente.

Por ejemplo, para recuperar my_string de res/values/strings.xml :

 <!-- strings.xml --> ... <string name="my_string">This is my string</string> ... 

Puedes usar estas dos formas

La primera manera:

 // MyActivity.java // ... // No need to use getResources() String msg = getString(R.string.my_string); ... 

La segunda manera:

 // MyActivity.java // ... // What is the point of getResources() here? // It works but it requires "import android.content.res.Resources;" and is longer Resources the_resources = this.getResources(); String msg = the_resources.getString(R.string.my_string); ... 

Entonces, ¿cuándo se le requerirá usar getResources() para acceder a un recurso? Parece que no es necesario, o se está llamando implícitamente, o debe ser llamado para acceder a otros tipos de recursos o para acceder a los recursos de otras maneras?

Los recursos tienen muchos métodos auxiliares que podemos requerir.

R.id, R.drawable todo devuelve dinámico int asignado por android durante el tiempo de construcción. Supongamos que tenemos un requisito donde necesitamos acceder a una imagen de bandera coutries basada en su nombre.

Si tenemos nombre de imagen como us.png y el valor que tenemos es 'nosotros'. Las 2 maneras de manejarlo son

 if(countryName.equals("us")){ imageview.setImageRsource(R.drawable.us); } 

O

 Resources res = getResources(); int imageId = res.getIdentifier(getIdentifier(countryName, "drawable" ,"com.myapp"); imageview.setImageRsource(imageId); 

El segundo método será el camino a seguir, especialmente cuando hay más de 50 países o usted terminará con un muy largo if-else o switch declaración.

El objeto resources también se utiliza cuando se necesita acceder al contenido de la carpeta Assets

 res.getAssets().open(YOUR FILE); 

La instancia de recurso también se puede pasar a otros archivos de clase para acceder a los recursos. Estos son algunos de los escenarios que se pueden utilizar para.

Será útil en las clases non_activity.

Pasarás el contexto a la clase y desde allí podrás acceder a los recursos.

Una clase que hereda Activity también hereda getResources (). Si usted tiene una clase que es una actividad (o un derivado de la misma) tiene acceso a este método (a través de la herencia, un concepto realmente, realmente básico en la programación orientada a objetos) Si usted tiene una clase que no es un derivado de tal Clase, es necesario dar acceso a dicho contexto para el acceso a dichos recursos.

Si necesita más información acerca de la herencia, el polimorfismo, o el etc. referente a la programación orientada objeto, sugiero referirme a varios Web site oa los curricula de escuela que tocan en tales ediciones.

  • ¿Por qué es imposible acceder a los recursos de manera estática?
  • Eliminación automática de cadenas no referenciadas de strings.xml
  • Pantalla Splash mientras carga recursos en la aplicación android
  • Bitmaps de Android en la memoria de fugas xml?
  • ¿Por qué las vistas pierden el relleno cuando se establece un backgroundResource de xml?
  • Obtener ID de recurso de valor
  • Eliminar los recursos no utilizados antes del envío
  • ¿Cuál es el estado de los idiomas de Right To Left en Android?
  • ¿Eclipse no está contento con una sola carpeta?
  • Cambiar idioma mediante programación en Android
  • ¿Cómo acceder a los recursos del proyecto de la biblioteca de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.