PDA

Ver la Versión Completa : [ SOLUCIONADO ] SobreSQLite y SharedPreferences


Bongiovi
09/07/14, 23:32:38
Tengo una base de datos SQLite estática donde leo ciertos campos y los muestro. Con algo de código mediante el evento OnClick de un botón en pantalla, guardo en ciertas variables la tabla, fila y celda mostradas en esa ejecución. Mi intención era guardar estos valores para rellenar otra Activity mediante la lectura de la base de datos con las variables guardadas anteriormente (tabla, fila y celda).

No encuentro una solución para hacer esto, puesto que pensé en SharedPreferences pero no se ajusta a lo que busco. Hay alguna otra opción, además de crear otra tabla en la base de datos que ya tengo? (Esta opción me parecía algo engorrosa a priori, pero tal vez sea la mejor)

Un saludo y gracias.

mocelet
10/07/14, 08:00:29
Puedes pasarle los parámetros que quieras a la segunda actividad con el Intent.

Si lo que quieres es guardar los datos para distintas ejecuciones, entonces sí hace falta almacenamiento persistente, con las preferencias va sobrado.

Dexafree
10/07/14, 11:09:16
Si lo que quieres es que el usuario rellene unos campos, guardarlos en la BD y a la vez que se abra una nueva activity con los datos rellenados, lo más facil es pasarle los parámetros a la nueva Activity mediante un Intent, como te ha dicho mocelet


Intent i = new Intent(this, Activity2.class);

i.putExtra("CLAVE", valor); //Siendo valor un String, Int... o incluso un Parcelable

startActivity(i);


Y luego en la Activity 2, en el onCreate:


Bundle extras = getIntent().getExtras();
if (extras != null) {
X nombreVariable = extras.getX("CLAVE"); //Siendo X String, int... o incluso un Parcelable
}

Bongiovi
10/07/14, 11:35:29
Gracias por vuestras respuestas. El Intent no me sirve, puesto que los datos tienen que almacenarse de manera persistente.

En cuanto a SharedPreferences, tampoco me funcionaba por lo siguiente: asocié al evento de un botón colocar las variables tabla, fila y celda mediante el método putString (prefs.putString(key, value)), el problema es que ante distintas ejecuciones del programa no puedo guardar todos los datos, puesto que se sobreescriben dentro de la key que paso al método putString.

No se si me he explicado xD

Gracias y un saludo.

kriogeN
10/07/14, 12:12:59
Si tienes que almacenar varias "tabla, fila y celda" y son indefinidos tienes que ir a morir a SQLite.

Bongiovi
12/07/14, 00:04:04
Si tienes que almacenar varias "tabla, fila y celda" y son indefinidos tienes que ir a morir a SQLite.

Reutilizo este post para preguntar sobre un error que tengo tras usar SQLite para lo comentado anteriormente.

tabla = new String[numFilas];
tablaFila = new String[numFilas];
celda = new String[numFilas];

for (int i=1 ; i<=numFilas ; i++)
{
fila = miBBDDHelper.leerBBDD("DoneBin", i);
tabla[i-1] = fila[0];
tablaFila[i-1] = fila[1];
celda[i-1] = fila[2];
}El código anterior está pensado para rellenar los Arrays "tabla", "tablaFila" y "celda" con los datos de una BBDD, dentro de la tabla "DoneBin". El método "leerBBDD(String, int)" devuelve un StringArray con los campos de la fila de mi BBDD (los parámetros que se le pasan son la tabla y la fila de la tabla).

El problema es que "tabla", "tablaFila" y "celda" se rellenan con la última fila de la tabla "DoneBin". Es decir, si "DoneBin" tiene 12 filas, los 3 Arrays tienen 12 elementos iguales correspondientes a las 3 columnas de la tabla.

Me trae loco esto, ¿dónde está el fallo?

Un saludo.

EDITO.

El problema estaba en la definición del método "leerBBDD(String, int)". Doy por resuelto el post, muchas gracias ;)