Android - Como mostrar R.String

 
Vista:
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por Luis (97 intervenciones) el 04/12/2016 22:39:59
Hola de nuevo.

Como dice el titulo que es muy simple desde una activity podemos mostrar un texto en un mensaje de 2 maneras.

Primera que no es recomendable entre comillas
1
Toast.makeText(getApplicationContext(), "Nombre no encontrado", Toast.LENGTH_SHORT).show();

La segunda es la que se recomienda aciendo uso del archivo values/Strings el cual contiene:
1
2
3
<resources>
    <string name="nombre_no_encontrado">Nombre no encontrado</string>
</resources>

1
Toast.makeText(getApplicationContext(), R.string.nombre_no_encontrado, Toast.LENGTH_SHORT).show();


El problema es que desde una activity realizo una consulta a una base de datos sql y espero que me retorne un mensaje por ejemplo: Historial vacio.

Desde la activity realizo la consulta a la basede datos de esta manera:
Espero recibir en el String ( mensaje ) la instruccion que me enviara la base de datos.

1
2
3
4
basedatos db= new basedatos(getApplicationContext(),null,null,1);
                                    String mensaje =db.borrarHistorial();
 
                                    showMessage(getString(R.string.titulo_app), (mensaje));


Y esta es el codigo de la base de datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public String borrarHistorial() {
        SQLiteDatabase database = this.getWritableDatabase();
        String mensaje = "";
        Cursor c = database.rawQuery("SELECT * FROM tbnombres", null);
        if (c.getCount() == 0) {
            mensaje = "El historial ya ha sido eliminado";
            return mensaje;
        } else {
            database.execSQL("Delete from  tbnombres");
            mensaje = "Historial Eliminado satisfactoriamente.  ";
            database.close();
            return mensaje;
        }
    }

Si el mensaje a retornar lo tengo entre comillas.
1
mensaje = "El historial ya ha sido eliminado";
me lo muestra correctamente.

Pero quiero utilizar el recurso que tengo en el archivo values/String

1
2
3
<resources>
    <string name="historial_eliminado_satisfactoriamente">Historial Eliminado satisfactoriamente</string>
</resources>

Pero no lo consigo, si utilizo esta linea

1
mensaje = String.valueOf((R.string.historial_eliminado_satisfactoriamente);

en vez del texto me muestra una serie de numeros 8569874567.

¿Como se declara el recurso string para que se muestre correctamente en la activity que esta esperando el mensaje ?

Gracias por su tiempo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por Francisco (358 intervenciones) el 04/12/2016 23:27:09
Hola.

mensaje = getResources().getString(R.string.historial_eliminado_satisfactoriamente);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por Luis (97 intervenciones) el 05/12/2016 00:14:48
Gracias Francisco esa línea ya la encontré en Google y el getResources se queda en rojo

Me tira esto
Cannot resolver method 'getResources'

Y estas son las opciones que me ofrece.
Ceate Getter
Create property
Create method 'getResources'

Que no lo consigo la string
R.string.historial_eliminado

Si me sale en azul pero nose cual es el modo de hacer que se muestre

También he probado
mensaje = getResources.getStringng
mensaje = .getString

Y nada

Alguna idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por Luis (97 intervenciones) el 05/12/2016 20:57:25
Holaaa alguien sabe por que no me deja??

Me falta algun import??

He agregado este
import android.R.string;

pero no sirve.no esta en uso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 466
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por Francisco (358 intervenciones) el 05/12/2016 21:26:29
hola Luis

para recoger un string de Resources se usa:

1
mensaje = getResources().getString(R.string.historial_eliminado_satisfactoriamente);

Puede que el programa se te haya estropeado .
Prueba crear otro programa y sin añadirle nada lanzalo en el emulador a ver si te ha cargado bien todo lo que necesita y se carga.
pon las variable en la carpeta res/values/String
Despues copia y pega el codigo que tienes hecho en el nuevo programa.


Prueba a ver si ahora te reconoce el resource;

No se me ocurre nada mas que puedas hacer.

Suerte,,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 444
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por juanki (253 intervenciones) el 05/12/2016 22:03:51
Hola

Para acceder a los string guardados en el archivo res/values/string.xml hay que usar el método getString (int Id_string):

1
String mensaje = getString(R.string.historial_eliminado_satisfactoriamente);

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por Luis (97 intervenciones) el 06/12/2016 12:22:53
Hola de nuevo juanki

Gracias por intentar ayudarme su linea que comenta

String mensaje = getString(R.string.historial_eliminado_satisfactoriamente);

Reconoce perferfectamente desde cualquier activity ( extends AppCompatActivity )

Pero las activitys que son ( extends SQLiteOpenHelper ))

no funciona se queda el getString en rojo

He importado
import android.R.*;
import android.R.string;

De todas formas si tengo el texto entre comillas y pongo el cursor encima android estudio me ofrece :
Stract string resource

Como resource Name le pongo, historial_eliminado_satisfactoriamente
El Resource value ya lo ha rellenado android estudio con, El historial ya ha sido eliminado

Y al dar OK me crea:
mensaje = l.getString(R.string.historial_eliminado_satisfactoriamente);

mensaje = barra vertical roja seguida de punto seguido de getString en rojo

Si te fijas me pone una barra roja y un punto . delante del getString quedando getString en rojo con la barra roja y el punto

Si posiciono el cursor encima del la barra roja me dice:
expected ';'

Y se mepongo encima del getString en rojo me dice:
cannot resolve method 'getString(int)'

Y no me ofrece ninguna opcion para reparar.
La barra roja esta fija.

Alguna idea de como
return mensaje;

El mensaje que quiero retornar quiero utilizarlo de res/values/string.xml pero se esta poniendo dificil

Eso me ocurre en todos los metodos que intento retornar un mensaje.

Recuerdo los pasos que realizo:


Desde la activity realizo la consulta a la basede datos de esta manera:
Espero recibir en el String ( mensaje ) la instruccion que me enviara la base de datos.


1
2
3
4
basedatos db= new basedatos(getApplicationContext(),null,null,1);
                                    String mensaje =db.borrarHistorial();
 
                                    showMessage(getString(R.string.titulo_app), (mensaje));

Y este es el codigo de la base de datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public String borrarHistorial() {
        SQLiteDatabase database = this.getWritableDatabase();
        String mensaje = "";
        Cursor c = database.rawQuery("SELECT * FROM tbnombres", null);
        if (c.getCount() == 0) {
            mensaje = "El historial ya ha sido eliminado";
            return mensaje;
        } else {
            database.execSQL("Delete from  tbnombres");
            mensaje = "Historial Eliminado satisfactoriamente.  ";
            database.close();
            return mensaje;
        }
    }

Que parte esta mal ????


Gracias por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 444
Oro
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por juanki (253 intervenciones) el 06/12/2016 13:00:38
Hola

Detalle muy importante que habías omitido hasta ahora:

Reconoce perferfectamente desde cualquier activity ( extends AppCompatActivity )
Pero las activitys que son ( extends SQLiteOpenHelper ))
no funciona se queda el getString en rojo


El método getString (int Id_string) pertenece a la clase Context, por tanto en SQLiteOpenHelper no está disponible y por tanto no lo puedes usar.

Pero, si te fijas, en el constructor le estás pasando precisamente un Context, por lo tanto ya lo tienes resuelto, tan solo tienes que guardar ese Context en una variable privada de la clase SQLiteOpenHelper y acceder a el cuando lo necesites:

1
2
3
4
5
6
7
8
9
public DbHelper(Context context) {
        super(context, .........);
 
        this.ctx = context;
    }
 
.....
 
String mensaje = ctx.getString(R.string.historial_eliminado_satisfactoriamente));

Acostúmbrense a mirar la documentación

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Como mostrar R.String

Publicado por Luis (97 intervenciones) el 06/12/2016 21:19:45
Mil gracias juanki.

Jamas hubiese encontrado ese error como digo soy muy nuevo en esto y se lo mas basico y a base de tropezones voy aprendiendo y gracias a personas como usted podemos ir avanzando.

Pero este error sabia que tenia que ser algo relaccionado con esa clase ya que no daba en las otras pero jamas lo hubiese encontrado.
Repito mil gracias.

Revisando la documentacion de android tienes que estar muy alto de nivel para poder comprender lo que te dice.
Espero poco a apoco ir avanzando y poder llegar.

Saludos y gracias, seguro que a muchos les sera muy util este post
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar