2011-12-26 18 views
13

Soy nuevo en Android y estoy aprendiendo el SDK a mí mismo de los recursos disponibles en la red.Resources.getSystem() vs getResources()

me encontré con una situación ahora. Estoy tratando el código de abajo:

Tipo 1: getResources().getString(android.R.string.cancel);

Tipo 2: Resources.getSystem().getString(android.R.string.cancel);

Tipo 3: getString(android.R.string.cancel);

Todos los métodos anteriores producen el mismo resultado. Entonces, ¿cuáles son estos métodos? ¿Cuáles son sus casos de uso? ¿Cuáles son las buenas prácticas sobre cuándo usar qué método? Por favor, ayúdame.

Respuesta

0

Estos tres métodos son todos iguales. Aquí es el método de la raíz: getApplicationContext().getResource().getString("") y aquí es el método de acceso directo: getString("") utilizar el método de acceso directo cuando se va a procesar en las aplicaciones contexto. En casi todos los casos, usamos getString() para obtener cadenas definidas en el archivo String.

4

los 3 retorno el mismo valor, pero Resources.getSystem() las referencias a los recursos del sistema y podría causar un accidente if used incorrectly.

El uso aconsejado es "getString (android.R.string.cancel);"

También se usa como tal en el WalkieTalkieActivity.java code en el sitio web para desarrolladores de Android.

+0

sí, lo intenté con Resources.getSystem() me dio fuerza en algunos lugares ... recomiendo otros dos .. –

7

La diferencia es, no sólo en lo que se obtiene, pero en ¿Dónde se puede utilizar ellos.

La primera y la tercera están utilizando los "contexto". invisiblemente Por lo tanto, muy a menudo (en miembros estáticos o miembros fuera de actividad) no puede usarlos directamente, a menos que pase contexto o recurso como una variable estática o como un parámetro en su alcance. Pero la segunda

Resources.getSystem().getString(android.R.string.cancel) 

Se puede utilizar absolutamente por todas partes en su aplicación, incluso en la declaración constantes estática! Pero para los recursos del sistema solo

+3

Sin embargo, viene con un inconveniente. 'Resources.getSystem()' proporciona acceso solo a los recursos del sistema (sin recursos de la aplicación), y no está configurado para la pantalla actual (no puede usar unidades de dimensión, no cambia en función de la orientación, etc.). –

+0

@AlexanderSuraphel Por favor, fíjate en la última oración de la respuesta. Estoy totalmente de acuerdo con usted. – Gangnus

Cuestiones relacionadas