2011-11-12 15 views
23

En mi clase java, quiero usar un recurso de cadena de strings.xml.android cómo usar recurso de cadena en una clase java

para eso tengo que usar, como a continuación,

getString(R.string.address) 

si mi clase es una actividad entonces su toma. Pero mi clase es una clase Java simple, ¿cómo puedo usar allí?

¿Es posible? Gracias

+0

Si su proyecto es un proyecto de Android. Definitivamente puede usarlo. ¿Lo ha intentado? intente usarlo y luego díganos. –

+4

Tengo curiosidad por saber cuál era tu lógica cuando aceptaste la respuesta que respondiste. –

+0

+1 (quedan 12 más) – MKJParekh

Respuesta

30

Una clase no tiene un contexto y utilizar un recurso de cadena se necesita un contexto. Así que solo llame a la clase desde una actividad y proporcione un parámetro context y dentro de su constructor de clase simplemente use ese contexto para obtener el recurso de cadena.

En su clase personalizada, necesita importar el espacio de nombres R para que el proyecto obtenga el Id del recurso.

import com.myrandomapp.R; 

luego a que la cadena real

context.getString(R.string.COOL_STRING) 
+13

Esta respuesta es incompleta: para completar para aquellos que aún tienen preguntas, debe importar el espacio de nombres R para que el proyecto obtenga el Id del recurso. ejemplo) com.myappdomain.R de importación (USE SU NAMESPACE AQUÍ) luego a que el actual cadena context.getString (R.string.SOME_STRING) –

+1

@AndroidAddict 1 para usted, usted me guarda un dolor de cabeza! – Mirko

+0

@AndroidAddict +1. Deberías editar la respuesta – Br0thazS0ul

16

Puede pasar el contexto de la clase Activity a la clase java y acceder a los recursos.

De la clase de actividad

Helper helper = new Helper(this); 

Su clase Java

public class Helper { 

    Helper(Context c){ 
     c.getString(R.string.address); 
    } 
} 
8

Puede crear una estática Application Context en su aduana Application clase

public class App extends Application{ 

    private static Context mContext; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mContext = getApplicationContext(); 
    } 

    public static Context getContext(){ 
     return mContext; 
    } 
} 

A continuación, sólo tiene que llamar App.getContext().getResources() conseguir cualquier valor de los recursos .

Solo recuerda que este Context es Application tipo, entonces hay cosas que este Context no es bueno para usar. Lee this para más información.

0

Se podría hacer si se añade esta línea:

// this is the object itself, and idString is the ID String bound to the literal. 
this.getString(R.string.idString) 

espero que este comentario le ayuda!

Brs.

Cuestiones relacionadas