|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
|
Herramientas |
#1
|
||||
|
||||
sqlite
hola buen dia
estoy tratando de trabajar con sqlite lo que necesito es poner una concdicion para ver si existe la tabla "name" o ya hay algun registro dentro de ella , esto es si no existe que se muestren unos layout de registro, si si existe algun registro q muestre los layouts sobrantes , alguien tiene algun ejemplo o alguna pagina , tutorial o algo q me pueda servir?? no se como decirle con codigo que ya no inicie en cierto layout si no en el otro |
|
#2
|
||||
|
||||
Si haces las cosas bien con SQLite la tabla va (debe) existir siempre. Lo que debes comprobar es que existen registros dentro de ella, y para eso puedes hacer un SELECT COUNT(*) por ejemplo, o simplemente intentar seleccionar y si no consigues leer nada es que no hay registros.
Aquí tienes un ejemplo de como se hace: http://www.sgoliver.net/blog/?p=1646 |
#3
|
||||
|
||||
Si lo único que quieres almacenar es un usuario y saber si es la primera vez que se ejecuta o no te va a ser mucho más sencillo y eficaz utilizar SharedPreferences que una tabla SQLite:
http://developer.android.com/guide/t...rage.html#pref http://developer.android.com/referen...eferences.html Te bastará con guardar los campos que necesites para el registro y un campo extra booleano que inicialmente sea "false" indicando si el usuario se ha registrado. Cada vez que abres la app se comprobará ese campo, la primera vez será "false" y pones una condición que si es "false" te vaya a la pantalla de registro, una vez en esa pantalla cuando el usuario se registre le cambias el valor a "true" y ya no lo tocas nunca más. A partir de ahí cada vez que se abra la app y lea que el valor es "true" en lugar de ir a la pantalla de registro le indicas que vaya a la pantalla que quieras. Si no te aclaras mucho con lo que dice el link avisame, que realmente se implementa en 4 líneas y no requieres ni estructuras y datos adicionales y te pego un código de ejemplo
__________________
Mis apps en el Market:
https://market.android.com/search?q=hexahis&so=1&c=apps http://www.appfutura.com/dev/Hexahis |
Gracias de parte de: | ||
#4
|
||||
|
||||
Yo como el compañero anterior para la funcionalidad que comentas utilizaría solo SharedPreferences. Yo por ejemplo en la aplicación que estoy haciendo necesito saber si es la primera vez que ejecuta la aplicación para que me introduzca una fecha que necesita el programa, y lo he hecho con SharedPreferences y va perfecto. Te evitas así tener que utilizar una base de datos.
__________________
Visitar mi blog sobre ANDROID.
bamboo5.blogspot.com Buscar en GOOGLE PLAY mis apps gratuitas LENTILLAS WIDGET, EATTOOL y TRIPTOOL COACHMANAGER para gestión de entrenadores. |
Gracias de parte de: | ||
#5
|
||||
|
||||
gracias hecsagis
no estaria nada mal si tuvieras un ejemplo mas entendible xq la vdd soy novato y con lo que viene en la pag me hago bolas jejejejeje si no es mucha molestia y pudieras ponerme el ejemplo que dices seria de gran utilidad gracias |
#6
|
||||
|
||||
Un ejemplo fácil:
En el OnCreate de tu Activity principal añades lo siguiente: boolean primera; //Declaramos estas variables String user, pass; //Cargamos el valor de las variables desde una estructura SharedPreferences. SharedPreferences misDatos = getApplicationContext().getSharedPreferences("misd atos", 0); primera = misDatos.getBoolean("primera", "true"); user= misDatos.getString("user", ""); pass = misDatos.getString("pass", ""); //Con eso de ahí cargará el valor almacenado, si es la primera vez que se ejecuta, como no habrá nada cargará el valor por defecto (el segundo parámetro de la asignación), es decir, user y pass en blanco y primera será igual a true, lo que quiere decir que es la primera vez que ejecutamos la aplicación. //A continuación añades la siguiente condición en el programa: if(primera){ //Cargar intent que vaya a la pantalla de registro } else{ //Cargar intent que vaya a la pantalla cuando se trata de alguien ya registrado } -------------------------------- Con eso tendríamos todo lo que hay que añadir a la activity principal, ahora solo falta guardar los datos de registro en la pantalla empleada para tal propósito. En la activity de registro, una vez el usuario ha introducido user y pass bastará con añadir el siguiente código: SharedPreferences misDatos = getApplicationContext().getSharedPreferences("misd atos", 0); SharedPreferences.Editor editor = misDatos.edit(); editor.putBoolean("primera", false); //Con esto le indicamos que ya se ha registrado editor.putString("user", evUser.getText().toString()); //Guardas el nombre de usuario del EditView que sea editor.putString("pass", evPAss.getText().toString()); //Guardas la pass editor.commit(); ------------------------------------ Y eso es todo, a partir de ahí cada vez que ejecutes el programa la variable boolean primera será igual a false, por lo que a partir de la condición que has puesto saltará a la activity correspondiente. Como ves es muy sencillo y basta con añadir unas 10 líneas de código
__________________
Mis apps en el Market:
https://market.android.com/search?q=hexahis&so=1&c=apps http://www.appfutura.com/dev/Hexahis |
Gracias de parte de: | ||
#7
|
||||
|
||||
de verdad muchas gracias me acabas de salvar hecsagis
tengo una duda a ver si se puede y si puedes ayudarme , al iniciar mi app empieza en la pantalla de registro (esto siendo la primera vez) pero si ya es la segunda todo eso del sharedpreferences tendria q ponerlo en el oncreate de mi activity de registro y por tanto se carga la pantalla auque despues se la salte pero ya la cargo, hay alguna forma para que no carge la pantalla y se vaya directo a la otra??? espero me de a entender |
#8
|
||||
|
||||
o tendria que crear una nueva activity para q de ahi me mande a la de registro o a la otra??
|
#9
|
||||
|
||||
Lo que yo haría es que la activity principal no sea la del registro, de esa forma si es la primera vez carga la de registro y si es la segunda o siguientes que se quede en esa activity o cargue otra diferente, según el funcionamiento que quieras darle
__________________
Mis apps en el Market:
https://market.android.com/search?q=hexahis&so=1&c=apps http://www.appfutura.com/dev/Hexahis |
#10
|
||||
|
||||
si pero de todas formas si pongo la otra como principal esa tambien se cargara aunque se la primera vez osea se carga y manda a llamar la de registro pero si se regresan volveran a esa
|
#11
|
||||
|
||||
otra pregunta hay alguna forma de borrar el sharedpreferences??? con codigo
|
#12
|
||||
|
||||
Siempre que quieras, simplemente en la activity que quieras borrar los datos ejecutas la parte en la que guardas el valor de las variables y les asignas lo que quieras, por ejemplo para borrar yo haría:
SharedPreferences misDatos = getApplicationContext().getSharedPreferences("misd atos", 0); SharedPreferences.Editor editor = misDatos.edit(); editor.putBoolean("primera", true); editor.putString("user", ""); editor.putString("pass", ""); editor.commit();
__________________
Mis apps en el Market:
https://market.android.com/search?q=hexahis&so=1&c=apps http://www.appfutura.com/dev/Hexahis |
Gracias de parte de: | ||
#13
|
||||
|
||||
pero eso seria para borrar los datos, pero para borrar el registro digamos, hay alguna forma???
|
#14
|
||||
|
||||
Para borrarlo por completo:
getApplicationContext().getSharedPreferences("misd atos", 0).edit().clear().commit()
__________________
Mis apps en el Market:
https://market.android.com/search?q=hexahis&so=1&c=apps http://www.appfutura.com/dev/Hexahis |
Gracias de parte de: | ||
#15
|
||||
|
||||
muchas gracias hecsagis eres de gran ayuda
aprovechandote jejje una duda como puedo cerrar un activity desde otra?? ejemplo tengo 2 activitys, activity1 activity2 de la activity uno pasa al dos y cuando le doy en un boton de finalizar en el activity dos quiero q se cierren los dos activity2.this.finish(); asi solo cierro la dos pero la uno no se como |