Primera aplicación en Android Studio

La vida implica cambios y por más comodos que muchas veces estamos, la vida cambia, todo cambia.

Por ejemplo esta máquina desde donde ahora escribo, ha sido complice inanimada de mis tutoriales, videos, artículos, reflexiones y demás “diarreas mentales” que escribo en los diferentes espacios virtuales donde habitan mis ideas.

Pues bien, estamos a punto de jubilarla, pero no sin antes rendirle todos mis honores por ser mi herramienta complice para tratar de generar y compartir conocimiento.

Al igual que yo. Aun vivo una etapa de incertidumbre la cual no se despeja, sin embargo, parece inminente, mi ausencia temporal o bien definitiva de mi quehacer docente, lo cual es algo muy complicado…pero bueno reitero es parte de la vida misma, los cambios situacionales que nos pueden ser benéficos o no tan favorables, pero implican desafíos y retos.

Pero basta, vamos a lo que nos reune aquí: “el aporte al conocimiento”.

En los años recientes se ha revolucionado la forma en como los humanos interactuamos unos con otros y más allá de las implicaciones negativas que conlleva la extremada dependencia y algunos casos enajenación a los dispositivos móviles es una realidad latente y un tema ineludible en la ciencia-arte de las tecnologías de la información.

Llevo un par de cursos del anterior plan de estudios de la carrera de TICs con especialidad en desarrollo de sistemas de información que toca el tema de desarrollo de aplicaciones móviles.

En mi ámbito profesional no he trabajado mucho en el desarrollo de este tipo de aplicaciones por lo que no queda más que el camino del estudio, investigación y experimentación.

Y mientras un virus pone nuevamente al mundo en crisis, vamos a redactar como hacer una aplicación en Android más alla del tradicional “Hola Mundo”.

Nuestra fuente es una página que parecía antes vendía sus contenidos como plataforma de aprendizaje (Academia Android) .

Una de los primeros problemas que encontré fue que desde la página por alguna extraña razón decía que el equipo desde donde intentaba descargar el Android Studio no era compatible.

La versión al día que estamos escribiendo este post es la versión 3.6. Yo tenía una anterior pero hace un par de noches la puse a actualizar.

Android Studio te abre el último proyecto que habías trabajado el cual ya habíamos hecho en curso pasado pero hasta hoy me he dado un tiempo para documentarlo, por lo que haré que iniciamos desde cero.

Elegimos la opción de “Start a new Android Studio project”

Vamos a elegir una actividad vacía, y damos clic en el botón Next.

Le ponemos nombre al proyecto y aquí con el fin de no tener problemas con el ejercicio ya que es de algunos años atras elegí una versión de Android pasada y marque la casilla de verificación de “Use legacy android.support.libraries”, y por ahora usaremos Java como lenguaje de programación.

Se presenta a continuación nuestra aplicación.

No se si sea siempre o quizás lo hacemos de forma intuitiva pero vamos a iniciar el frontend (la interfaz de usuario), aquí el código en XML.

Yo recomiendo que aunque lento escriban todo el código, creo que asi nos vamos familiarizando con el lenguaje y el entorno de Android Studio, al fin tenemos tres sesiones.

Pero la pregunta ¿Dónde tengo mi layout.xml?. Hay buscar un poco entre las carpetas del proyecto para encontrar dicho archivo.

Quitamos el código existente, escribimos el del ejemplo y vamos a tener un primer problema.

Las dimensiones están marcadas en rojo, por lo que tenemos que hacer lo siguiente:

Vamos a la carpeta values y con clic derecho elegimos New-XML-Values XML File. Al archivo le llamamos dimens.xml.

Y escribimos las siguientes líneas:

Y volvemos a nuestro layout.xml

Donde ya no tenemos los valores marcados en rojo.

Vamos a seguir agregando el resto de los componentes.

Vamos a continuar agregando el código de Java. Lo siguiente es la clase Comentario que representa el modelo que refleja los datos a ser manipulados.

Proporcionamos el nombre de la clase.

Y escribimos el código del tutorial.

Ahora vamos a agregar la clase MyOpenHelper. No me gustaría ser reiterativo pero al ir insertando el código se hace una reflexión sobre que se esta haciendo al agregar determinado código.

A medida que se van agregando líneas de código, vamos agregando los import’s que se vayan necesitando, si recordamos las palabras reservadas final y static pudiéramos interpretarlas como constantes y si ponemos atención en los nombres tienen que ver con la base de datos Sqlite llamada comments.sqlite. Otra reflexión es el constructor de nuestra clase, el cual invoca al constructor del padre (SQLiteOpenHelper) con la palabra reservada super, para después tener una instancia de nuestra base de datos de SQLite (db) con la característica que podremos leer y escribir en ella.

Al ser una clase hija de SqliteOpenHelper se tienen que sobreescribir los métodos onCreate y onUpgrade, que en este caso solo se desarrolla el onCreate() que manda la instrucción SQL para la creación de la tabla.

Vamos por las operaciones fundamentales de los archivos en este caso insertar y borrar, para la inserción se invoca a la clase ContentValues cv, que es como el registro (tupla) de la tabla que será enviada en el método insert de la instancia de SQLiteDatabase db. Podemos observar que aquí no tenemos conexiones, ni comandos como cuando accesamos directamente a las bases de datos. Otra diferencia con el tutorial de internet es que aparece, pudieramos decir, el atributo de lo que se está enviando a los métodos, imagino para hacer más comprensible el código.

Lo mismo para el borrado de registros solo que aquí lo que requiere el método delete es un arreglo de Strings para enviar la condición del Where del Delete.

Podemos decir que este último código es el más …”extenso” sería el mejor calificativo, pero es lo que hacemos en muchas ocasiones y situaciones, leer de la base de datos y enviarlo a una colección, en este caso un ArrayList que le hemos llamado lista y es lo que regresa el método.

Ahora entra un nuevo objeto llamado Cursor, una colección virtual de registros de una tabla; gracias a este objeto se hace la consulta (método rawQuery()) y se rescatan los valores de las columnas (getString(), getInt(), getColumnIndex()) para después guardarlos en el ArrayList lista.

Por último vamos a darle vida a todas estás definiciones en la clase que se genera automáticamente MainActivity.java

Siguiendo la misma dinámica de ir escribiendo código y complementando lo faltante hacemos lo mismo, aquí es importante ver como se relaciona la definición de los elementos de la interfaz con el código xml ( por ejemplo editNombre con @+id/editNombre).

Por ahora lo que marca en rojo es porque no se han desarrollado los métodos abstractos. Después de terminar las definiciones vamos a los métodos para empezar con onCreate().

Cuando se crea la vista de nuestra aplicación se “inicializan” o digamos que se relación los elementos de la vista representados por un archivo xml y los atributos de la clase de los cuales son “espejo”. Así mismo la relación del evento onClick sobre cada botón que usará esta aplicación.

Un elemento que puede tener datos es el spinner que si hay información debe cargarla en un arreglo y luego mostrarla en un spinner (dropdownlist) para ello se carga el arreglo con los datos de la tabla comment de la base de datos de sqlite, y por medio de un adaptador se relaciona este arreglo con el objeto spinner, además este componente se relaciona con el evento onItemSelected()

Ahora vamos a programar la acción, el evento “onClick” aunque siendo estrictos sería, cuando el usuario da un “tap” en su pantalla de su celular o tableta.

En este fragmento de código podemos observar que tiene las operaciones de consulta, inserción y borrado.

Por último vamos a obtener el nuevo elemento seleccionado con el spinner, para guardarlo en el objeto c, y una vez que se ejecuta este evento, se muestra en los componentes EditText. Noten que el tutorial tiene un error de sintaxis (AdapterView <?> parent).

También se deja el cuerpo del método onNothingSelected() en blanco.

En un video de YouTube les comentaba sobre una posible solución a los usuarios de AMD[2] , usando el software GenyMotion y parece ser que el problema es que tengo instalado Visual Studio .NET según uno de sus compañeros.

En este segundo ensayo tuve que depurar 2 errores, que ahora cambio en este tutorial.

Para depurar en el dispositivo tengo otro tutorial [3] donde ahora con un Android 7 los pasos pudiéramos decir que son los mismos pasos para poner nuestro dispositivo en modo desarrollador.

Una vez hecho esto en Android Studio nos mostrará nuestro dispositivo real para probar ahí la aplicación.

Y pues aquí tenemos los resultados ya corriendo en nuestro dispositivo (bueno el que me prestó-regaló mi hermano Paquito, un Samsung J7).

Por primera vez, no se si habrá un “hasta la vista”…

¡Éxito!

Profesor Miguel Araujo.

Webgrafía

[1] “Academía Android”. https://academiaandroid.com/proyecto-ejemplo-de-app-android-con-bbdd-sqlite/

[2] Canal Miguel Araujo. https://youtu.be/PVi6ZDKnSTw

[3] AlejandriaTics La Biblioteca Virtual de las Tecnologías de la Información. http://utags.alejandriatics.kiubix.link/2018/03/08/xamarin-xamarin-como-me-has-hecho-sufrir/

Deja un comentario