2010-07-29 16 views
22

cuál es el trato conR.string.value Ayuda notificación androide

CharSequence contentTitle = R.string.value; 

error no puede convertir de int a CharSequence. ¿Hay alguna forma de evitar esto o me falta algo? he intentado

String s = R.string.value + ""; 
CharSequence contentTitle = s; 

que devuelve valores enteros. ¿Alguna ayuda?

Respuesta

55

R.string.value es una llamada al campo estático en la clase R, que se genera automáticamente por Eclipse y que hace una especie de resumen de todos sus recursos. Para recuperar la cadena, es necesario utilizar:

CharSequence contentTitle = getString(R.string.value); 

Si abre la clase R verá que sólo contiene números que son referencias a los recursos compilados de su proyecto.

+0

funcionó muy bien. gracias – Simon

+1

@Sephy Tengo un problema con getString(), sigo recibiendo "El método getString (int) no está definido ..." ¿qué estoy haciendo mal? – mlevit

+0

¿Qué intentas hacer con este método? – Sephy

7

Para recuperar la cadena, es necesario utilizar getString(),

pero getString() es un método de la clase de contexto. Si desea utilizar este método fuera de la clase de actividad, usted debe conseguir enlace a su contexto primero y luego llamar a:

String s = mContext.getString(R.string.somestring) 
1

R.string.value devuelve el número ID de referencia del 'valor' de los recursos. Si nos fijamos en la clase R, aparecerá como algo parecido a esto:

public static final class string { 
    public static final int value=0x7f040007; 
} 

He estado experimentando problemas con referencia al método getString(). El error exacto que Eclipse escupe a mí es:

El método getString (int) no está definida para el tipo DatabaseHelper.MainDatabaseHelper

Después de leer por un tiempo he descubierto que se debe hacer referencia a su contexto de la aplicación para acceder al método getString(). Estaba intentando crear una clase de ayuda SQLDatabase privada en un proveedor de contenido, sin embargo, eso no me permitía hacer referencia al método getString(). Mi solución hasta ahora es hacer algo como esto:

private class MainDatabaseHelper extends SQLiteOpenHelper { 

    MainDatabaseHelper(Context context) { 
     super(context, context.getString(R.string.createRoutesTable), null, 1); 
    } 

    public void onCreate(SQLiteDatabase db) { 
     db.execSQL((getContext()).getString(R.string.createRoutesTable)); 
    } 
} 

nota los siguientes referencias: dos de contexto

contexto .GetString()

(getContext()) .GetString()

No sé si este es el óptimo a largo plazo s solución pero parece funcionar por el momento. Espero que esto ayude.

0

También puede usar String s = getResources().getString(R.string.value);.

+0

Cómo obtener acceso en alguna clase de Java (no en actividad) como viewPagerAdapter. No tengo 'getContext'? –