2011-09-07 8 views
7

Mi código es:Android: Java: el uso de un recurso de cadena en un pan tostado

public static void ToastMemoryShort (Context context) { 
    CharSequence text = getString(R.string.toast_memoryshort); //error here 
    Toast.makeText(context, text, Toast.LENGTH_LONG).show(); 
    return; 
    } 

pero yo estoy poniendo "No se puede hacer una referencia estática a la getString método no estático (int) desde el contexto del tipo de "en Eclipse. Estoy tratando de estar listo para la localización de mi aplicación (conseguir todas las cadenas codificadas en los recursos), así que donde tengo:

getString(R.string.toast_memoryshort) 

que previamente había una cadena codificado que estaba bien.

No estoy seguro de lo que está pasando aquí (Java noob). ¿Alguien puede iluminarme por favor?

Muchas gracias

Baz

Respuesta

2

sólo tiene que utilizar esto en su lugar:

Maketext (contexto Contexto, int Resid, duración int) Hacer un estándar brindis que solo contiene una vista de texto con el texto de un recurso.

De http://developer.android.com/reference/android/widget/Toast.html

+0

Muchas gracias Stefan, perfecto. – Barry

+0

En realidad, era una combinación de su respuesta y la de Rasel: Necesitaba el .show al final, no necesitaba el "+" de Rasel antes del ID del recurso: Toast.makeText (context, R.string.toast_memoryshort, Toast.LENGTH_LONG) .espectáculo(); así que +1 a Rasel también. Muchas gracias. – Barry

+0

sí, por supuesto .show() es necesario :) –

16

Cambiar para

public static void ToastMemoryShort (Context context) { 

     Toast.makeText(context, context.getString(R.string.toast_memoryshort), Toast.LENGTH_LONG).show(); 
     return; 
     } 
+0

Gracias Rasel, ver más arriba. – Barry

+0

El motivo por el que esta respuesta es tan popular es que el uso de 'getString' en primer lugar sugiere que la cadena en sí era necesaria por algún motivo (inyección de var, formateo, etc.). Además, en realidad resuelve la excepción en cuestión, que es un valor genuino. – tishma

2

Se podría hacer su pan tostado más genérico como esto:

public void toast(String msg){ 
    Context context = getApplicationContext(); 
    CharSequence text = msg; 
    int duration = Toast.LENGTH_SHORT; 

    Toast toast = Toast.makeText(context, text, duration); 
    toast.show(); 
} 

A continuación, sólo llamar cuando necesite así:

toast("My message hardcoded"); 

o el uso de strngs.xml como este:

toast(this.getString(R.string.toast_memoryshort)); 
0

Debe cambiar

CharSequence text = getString(R.string.toast_memoryshort); //error here 

para:

CharSequence text = context.getString(R.string.toast_memoryshort); 

La función getString se implementa en Context#getString(int)

Cuestiones relacionadas