Introduccion a Android y Activities, Fragments e Intents

download Introduccion a Android y Activities, Fragments e Intents

of 199

Transcript of Introduccion a Android y Activities, Fragments e Intents

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    1/199

    TODOS LOS DERECHOS RESERVADOS

    El Framework de Android desde el

    Punto de Vista del OESF 

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    2/199

     – ¿Qué es Android?

     – Versiones de Android y sus características

     – La arquitectura de Android

     – Dispositivos Virtuales Android (AVD)

     – Desarrollo de tu primera aplicación móvil con Android

     – Estructura de una aplicación Android

    Introducción a la Plataforma Android

    2

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    3/199

     •  Android es un sistema operativo móvil que esta basado en una

    versión modificada de Linux.

    • En 2005, como parte de su estrategia de entrar al mundo móvil,

    Google compró Android y tomo su desarrollo.

    • Google estableció que Android fuera abierto y libre; así la mayoría del

    código de Android fue liberado bajo la licencia Apache open-source.

    • Los manufacturadores de hardware pueden agregar sus propias

    extensiones a Android y personalizar Android para diferenciar sus

    productos de otros.

    ¿Qué es Android ?

    3

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    4/199

    • Este simple modelo de desarrollo hace a Android muy atractivo y hadespertado el interés de muchas compañías tales como Motorola ySony Ericsson.

    • Cuando el Iphone fue lanzado al mercado, muchas de estascompañías se vieron obligadas a encontrar nuevas formas de

    revitalizar sus productos.

    • Estos manufacturadores de hardware ven en Android una solución, elcual les permite continuar desarrollando sus equipos y utilizar Androidcomo el sistema operativo que potencialice estos.

    • La principal ventaja de adoptar Android es que ofrece un enfoqueunificado para desarrollar aplicaciones. Los desarrolladoressolamente necesitan desarrollar para Android y sus aplicacionesdeberían ser capaces de ejecutarse en diferentes dispositivos.

    ¿Qué es Android ?

    4

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    5/199

    • La siguiente tabla muestra las versiones de Android y sus nombres-código:

    Versiones de Android

    5

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    6/199

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    7/199

    •  Aplicaciones escritas para versiones de Android anteriores a 3.0 soncompatibles con dispositivos Android 3.0. y se ejecutan sin realizar

    modificaciones.

    •  Aplicaciones para tablets con Android 3.0 que hacen uso de las nuevas

    características disponibles en 3.0, sin embargo, no serán capaces deejecutarse en dispositivos anteriores.

    • En octubre de 2011, Google liberó Android 4.0 una versión que oriento

    todas las características introducidas en Android 3.0 a los

    Smartphones, junto con algunas nuevas características tales como:

     – Desbloqueo a través de reconocimiento facial,

     – Monitoreo y control de uso de datos

     – Comunicación de campo cercano

    Versiones de Android

    7

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    8/199

    •  Android soporta las siguientes características:

     –  Almacenamiento: Utiliza SQLite, una base de datos relacional ligera, para

    almacenamiento de datos.

     – Conectividad:  Soporte para GSM/EDGE, IDEN, CDMA, EV-DO, UMTS,Bluetooth, Wi-Fi, LTE, y WiMAX

     – Mensajes: Soporta SMS y MMS

     – Web Browser: Basado en Web kit junto con el motor de JavaScript V8

     – Media: H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-

    WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3,

    MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, y BMP

    Características de Android

    8

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    9/199

    Características de Android

     – Hardware: Acelerómetro, Cámara, compas digital, sensor de proximidad y

    GPS.

     – Multi-touch: Soporta pantallas multi-touch

     – Multi-tasking: Soporta aplicaciones multitareas

     – Flash: Android 2.3 soporta Flash 10.1

     – Tethering:  Soporta conexiones a internet como un hotspotalámbrico/inalámbrico

    9

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    10/199

    • El sistema operativo Android es organizado en cuatro capasprincipales:

     – Kernel de linux: Esta capa contiene todos los drivers del dispositivo debajo nivel para los diferentes componentes de hardware de un dispositivo Android.

     – Librerías:  Estas contienen todo el código que provee las característicasprincipales del sistema operativo Android.

     –  Android runtime: En la capa de librerías, el android runtime provee unconjunto de librerías core que permite a los desarrolladores escribir Apps Android usando Java. El Android runtime también incluye la máquinavirtual Dalvik, la cual permite a cualquier aplicación Android ejecutar suspropios procesos con son su propia instancia de la máquina virtual Dalvik.

     Arquitectura de Android

    10

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    11/199

     Arquitectura de Android

     – Framework de la Aplicación:  Esta capa proporciona las distintas

    capacidades del SO Android a los desarrolladores para la construcción de

    aplicaciones móviles.

     –  Aplicaciones:  Sobre esta capa se encuentran las aplicaciones que

    compras con el dispositivo Android como también las aplicaciones que

    descargas e instalas del Android market.

    11

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    12/199

     Arquitectura de Android

    12

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    13/199

    Crear Dispositivos Virtuales Android (AVD)

    • El siguiente paso es crear un dispositivo virtual Android, el cual esutilizado para probar tus aplicaciones Android.

    • Un AVD es una instancia de un emulador que te permite modelar un

    dispositivo actual.

    • Cada AVD consiste de una descripción de hardware del dispositivo, un

    mapeo a una imagen de un sistema, almacenamiento emulado y

    tarjeta digital segura.

    • Se pueden crear tantos AVD como se requieran con el objetivo de

    probar tus aplicaciones sobre diferentes configuraciones.

    13

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    14/199

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    15/199

    Crear Dispositivos Virtuales Android (AVD)

    • En el diálogo del manejador del AVD, click al botón “New” para crearun nuevo AVD

    15

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    16/199

    Crear Dispositivos Virtuales Android (AVD)

    • En el diálogo de crear nuevo AVD, introduce y selecciona loselementos que quieras tener en tu AVD.

    16

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    17/199

    Crear Dispositivos Virtuales Android (AVD)

    • Para probar un AVD selecciona uno de la lista de la ventana dediálogo “Manejador  de AVD” y click al botón de “Start” 

    17

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    18/199

    Crear Dispositivos Virtuales Android (AVD)

    18

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    19/199

    Desarrollo de tu primera aplicación Android

    1.- En Eclipse, crea un proyecto nuevo por seleccionar File   NewProject

    19

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    20/199

    Desarrollo de tu primera aplicación Android

    2.- Expande la carpeta de Android y selecciona Android Project Next

    20

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    21/199

    Desarrollo de tu primera aplicación Android

    3.- Nombra al proyecto Android como HelloWorld y después click a Next

    21

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    22/199

    Desarrollo de tu primera aplicación Android

    4.- Selecciona los siguientes elementos en la ventana que aparece

    22

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    23/199

    Desarrollo de tu primera aplicación Android

    5.- La siguiente ventana muestra las opciones para configurar lascaracterísticas del icono de su aplicación

    23

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    24/199

    Desarrollo de tu primera aplicación Android

    6.- Crea una actividad en blanco por seleccionar Blank Activity

     Next

    24

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    25/199

    Desarrollo de tu primera aplicación Android

    7.- Nombra a tu actividad MainActivity y al layout como activity_main

    25

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    26/199

    Desarrollo de tu primera aplicación Android

    8.- El IDE de Eclipse debería mostrar la siguiente pantalla:

    26

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    27/199

    Desarrollo de tu primera aplicación Android

    9.- En el explorador de paquetes expande el proyecto HelloWorld. En lacarpeta de res/layout hacer doble-click a main.xml (activity_main.xml)

    27

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    28/199

    Desarrollo de tu primera aplicación Android

    10.- El archivo main.xml define la interfaz de usuario (UI) de tu aplicación

    28

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    29/199

    Desarrollo de tu primera aplicación Android

    11.- Modificar el archivo main.xml con el siguiente código:

    12.- Guarda los cambios realizados por presionar Ctrl + S

    29

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    30/199

    Desarrollo de tu primera aplicación Android

    13.- Click derecho sobre el nombre del proyecto en Eclipse andselecciona Run As Android Application

    30

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    31/199

    Desarrollo de tu primera aplicación Android

    14.- Si el proyecto no tiene ningún error, la aplicación HelloWorld esinstalada y ejecutada sobre el emulador de Android.

    31

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    32/199

    Desarrollo de tu primera aplicación Android

    15.- Click sobre el botón Home para mostrar la siguiente pantalla

    32

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    33/199

    Desarrollo de tu primera aplicación Android

    16.- Click sobre al botón de aplicaciones para desplegar la lista deaplicaciones instaladas en el dispositivo.

    33

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    34/199

    Desarrollo de tu primera aplicación Android

    • ¿Cuál AVD será utilizado para probar tu aplicación?

    34

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    35/199

    Cómo funciona

    • Para crear un proyecto en Android usando Eclipse se necesitaproporcionar la siguiente información:

    • En Android, una actividad (Activity) es una ventana que contiene la

    interfaz de usuario de tus aplicaciones. Una aplicación puede tener

    una o más actividades (MainActivity)

    35

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    36/199

    Cómo funciona

    • En este simple ejemplo, se modificó el archivo main.xml

    (activity_main.xml) para desplegar la cadena “This is my first Android

    application” y un botón.

    • El archivo main.xml (activity_main.xml) contiene la interfaz de usuariode la actividad, la cual es mostrada cuando MainActivity es cargada.

    • Cuando “depuras”  la aplicación sobre el emulador de Android, la

    aplicación es instalada automáticamente sobre el emulador.

    36

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    37/199

    Estructura de una aplicación Android

    • Varios archivos y carpetas forman un proyecto en Android en elexplorador de paquetes de Eclipse

    37

    src: contiene los archivos fuente .java del proyecto.

    En este ejemplo, MainActivity.java es el archivo

    fuente de tu actividad.

    gen: contiene el archivo R.java, el cual es un

    archivo generado que referencia todos los recursos

    encontrados en el proyecto.

    Librería Android 4.0: este elemento contiene un

    archivo, android.jar, el cual contiene todas laslibrerías de clases necesitadas por una aplicación

     Android.

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    38/199

    Estructura de una aplicación Android

    38

    assets: esta carpeta contiene los recursos usados por la aplicacióntales como HTML, archivos de texto, bases de datos, entre otros.

    bin: esta carpeta contiene los archivos construidos por el ADT durante

    el procesos de implantación. En particular este genera el archivo .apk

    (Android package). Un archivo .apk es el archivo para distribuir e

    instalar una aplicación de Android.

    res: esta carpeta contiene todos los recursos utilizados en tu

    aplicación. Además, contiene otros sub-carpetas tales como:

    drawable, layout, y values.

     AndroidManifest.xml: este es el archivo manifest para tu aplicación Android. En este archivo se especifican los permisos necesitados por

    tus aplicación así como también los intent-filters, receivers, entre

    otros.

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    39/199

    • El archivo main.xml (activity_main.xml) define la interfaz de usuario detu aplicación. Observa lo siguiente:

    • En este caso el @string se refiere al archivo strings.xml localizado en

    la carpeta res/values. Por lo tanto, @string/hello se refiere a la cadena

    hello definida en el archivo string.xml.

    Estructura de una aplicación Android

    39

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    40/199

    • La siguiente figura muestra otra carpeta llamada values-fr con elarchivo strings.xml conteniendo la misma cadena hello en francés.

    Estructura de una aplicación Android

    40

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    41/199

    • El siguiente archivo importante a describir en el proyecto Android es el AndroidManifest.xml:

    Estructura de una aplicación Android

    41

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    42/199

    • El archivo AndroidManifest.xml contiene la siguiente informaciónacerca de la aplicación:

     – Define el nombre del paquete de la aplicación como net.learn2develop.HelloWorld

     – La versión del código de la aplicación es 1 (establecido por el atributo

    android:versioncode). Este valor es usado para identificar el numero de versión dela aplicación.

     – El nombre de la versión de la aplicación es 1.0 (establecido por el atributoandroid:versionName), el cual es usado para mostrarse al usuario.

     – El atributo android:minSdkVersion del elemento especifica la versión

    mínima del SO sobre el cual la aplicación se ejecutará.

     – La aplicación utiliza la imagen llamada ic_launcher.png localizada en las carpetasdrawable.

    Estructura de una aplicación Android

    42

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    43/199

      – El nombre de la aplicación es el valor de la cadena app_name

     – Existe una sola actividad en la aplicación especificada por el archivo

    MainActivity.java.

     – Dentro de la definición de esta actividad, se encuentra un elemento llamado :

    • La acción para el intent-filter es llamada android.intent.action.MAIN para indicar

    que esta actividad sirve como el punto de entrada para la aplicación.

    • La categoría para el intent-filter es llamada android.intent.category.LAUNCHERpara indicar que la aplicación puede ser ejecutada a través del icono mostrado

    en el dispositivo.

    Estructura de una aplicación Android

    43

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    44/199

    • Conforme se agreguen más archivos y carpetas al proyecto, Eclipse

    automáticamente generará el contenido del archivo R.java, el cual

    actualmente contiene lo siguiente:

    Estructura de una aplicación Android

    44

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    45/199

    • Finalmente, el código que conecta a la actividad con la interfaz de

    usuario (main.xml / activity_main.xml) es el siguiente:

    Estructura de una aplicación Android

    45

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    46/199

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    47/199

    • Para crear una actividad (Activity), se crea una clase java que herede

    de la clase base Activity

    Entendiendo las Activities

    47

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    48/199

    • Todas las actividades que se tienen en la aplicación deben ser

    declaradas en el archivo AndroidManisfest.xml

    Entendiendo las Activities

    48

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    49/199

    • La clase base Activity define una serie de eventos que gobiernan elciclo de vida de una actividad:

     – onCreate(): Llamado cuando la actividad es creada.

     – onStart(): Llamado cuando la actividad es visible al usuario.

     – onResume(): Llamado cuando la actividad empieza a interactuar con el usuario.

     – onPause(): Llamado cuando la actividad actual esta siendo pausada y la previaactividad esta siendo reanudada.

     – onStop(): Llamado cuando la actividad no es visible al usuario.

     – onDestroy(): Llamado antes de que la actividad sea destruida por el sistema.

     – onRestart(): Llamado cuando la actividad ha sido parada y es reiniciada otra vez.

    Entendiendo las Activities

    49

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    50/199

    • El siguiente diagrama muestra el ciclo de vida de una actividad:

    Entendiendo las Activities

    50

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    51/199

    1.- Utilizando Eclipse, crea un nuevo proyecto llamado Activity

    2.- En el archivo MainActivity.java agrega las siguientes sentencias:

    Entendiendo el ciclo de vida de una actividad

    51

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    52/199

    3.- Presiona F-11para ejecutar la aplicación sobre el emulador de Android

    (ventana LogCat)

    Entendiendo el ciclo de vida de una actividad

    52

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    53/199

    4.- Presiona el botón de back sobre el emulador de Android:

    5.- Click sobre el botón de Home y mantenlo presionado. Después click

    sobre el icono de Activities y observa la ventana de LogCat:

    6.- Click sobre el botón de llamadas (F3) por lo que nuestra actividad es

    puesta en el background. Observa la salida en la ventana LogCat:

    Entendiendo el ciclo de vida de una actividad

    53

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    54/199

     

    7.- En este caso el evento OnDestroy() no fue llamado, lo cual significa

    que nuestra actividad esta aún en memoria.

    8.- Click al botón de back y observa la salida en la ventana de LogCat

    Entendiendo el ciclo de vida de una actividad

    54

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    55/199

     

    • Una actividad es destruida cuando se presiona el botón de back.

    • El método OnPause() es llamado cuando la actividad es enviada al

    background y cuando es terminada por el usuario al presionar el botón

    de back.

    • Cuando una actividad es iniciada, los métodos OnStart() y

    OnResume() son siempre llamados.

    • Cuando una actividad es por primera vez creada el método OnCreate()

    es llamado.

    Como funciona

    55

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    56/199

    • Con base en estas observaciones, se deben seguir las siguientes

    directrices:

     – Utiliza el método OnCreate() para crear e instanciar los objetos que se

    estarán usando en la aplicación.

     – Utiliza el método OnResume() para iniciar cualquier servicio o código que

    necesite ejecutarse mientras tu actividad esta en primer plano.

     – Utiliza el método OnPause() para detener cualquier servicio o código que

    no requiera ejecutarse cuando tu actividad no esta en primer plano

     – Utiliza el método OnDestroy() para liberar recursos antes de que tu

    actividad sea destruida.

    Como funciona

    56

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    57/199

    • Para aplicar una apariencia de cuadro de diálogo a una actividad

    realiza lo siguiente:

     Aplicar estilos y temas a una Actividad

    57

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    58/199

    • Esta modificación hará que tu actividad aparezca como un Dialog

     Aplicar estilos y temas a una Actividad

    58

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    59/199

    • Ocultar el titulo de la actividad:

     Aplicar estilos y temas a una Actividad

    59

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    60/199

    • Para desplegar una ventana de dialogo que obtenga una confirmación

    del usuario, se puede sobre-escribir el método protegido

    onCreateDialog() definido en la clase base Activity.

    1.- Crea un nuevo proyecto Android llamado Dialog

    2.- Agrega las siguientes sentencias al archivo main.xml

    Desplegar una ventana de diálogo usando una Activity

    60

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    61/199

    3.- Agrega las siguientes sentencias en negrita al archivo

    DialogActivity.java:

    Desplegar una ventana de diálogo usando una Activity

    61

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    62/199

     

    Desplegar una ventana de diálogo usando una Activity

    62

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    63/199

     

    4.- Presiona F-11 para ejecutar la aplicación en el emulador de Android.

    Desplegar una ventana de diálogo usando una Activity

    63

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    64/199

    • Click sobre el botón para desplegar la ventana de diálogo

    Desplegar una ventana de diálogo usando una Activity

    64

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    65/199

    • Para mostrar un Diálogo, se debe implementar el método

    onCreateDialog() en la clase Activity.

    • Este método es llamado cuando se invoca al método showDialog()

    • El método onCreateDialog() es utilizado para crear Dialogs que son

    manejados por la Actividad

    Como funciona

    65

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    66/199

    • Para crear un Diálogo, se debe utilizar el constructor Builder de la

    clase AlertDialog.

    Como funciona

    66

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    67/199

    Como funciona

    67

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    68/199

    1.- Utiliza el mismo proyecto creado anteriormente y agrega la siguientes

    sentencias en negritas al archivo main.xml:

    Desplegar un dialogo de progreso (Por favor espere)

    68

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    69/199

    2.- Agrega las siguientes sentencias en negrita al archivo

    DialogActivity.java:

    Desplegar un dialogo de progreso (Por favor espere)

    69

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    70/199

    Desplegar un dialogo de progreso (Por favor espere)

    70

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    71/199

    3.- Presiona F-11 para ejecutar la aplicación en el emulador de Android y

    presiona el segundo botón para desplegar el diálogo de progreso:

    Desplegar un dialogo de progreso (Por favor espere)

    71

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    72/199

    • Para crear un diálogo de progreso, se debe crear una instancia de la

    clase ProgressDialog e invocar a su método show():

    • Este código despliega el dialogo de progreso. Debido a que este es un

    dialogo modal, se bloqueará la IU hasta que el dialogo de progreso

    desaparezca.

    • Para llevar a cabo una tarea en el background, se debe crear unThread usando un bloque Runnable

    Como funciona

    72

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    73/199

    • El código que se coloque dentro del método run() será ejecutado en unhilo separado y en este caso se simula esto por realizar algo por cinco

    segundos a través de insertar un retraso con el método sleep():

    • Después de cinco segundo, se desaparece el diálogo por llamar al

    método dismiss().

    Como funciona

    73

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    74/199

    • Se puede crear también un diálogo que despliegue el progreso de una

    operación tal como el estado de una descarga.

    1.- Utilizando el proyecto creado en la sección anterior, agrega las

    siguientes líneas en negrita al archivo main.xml:

    Desplegar un dialogo de progreso más sofisticado

    74

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    75/199

    2.- Agrega las siguientes líneas en negrita al archivo DialogActivity.java:

    Desplegar un dialogo de progreso más sofisticado

    75

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    76/199

    Desplegar un dialogo de progreso más sofisticado

    76

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    77/199

    Desplegar un dialogo de progreso más sofisticado

    77

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    78/199

    3.- Presiona F-11 para ejecutar la aplicación en el emulador de Android y

    presiona el tercer botón para desplegar el diálogo de progreso:

    Desplegar un dialogo de progreso más sofisticado

    78

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    79/199

    • Para crear un dialogo que muestre el progreso de una operación, se

    debe primero crear una instancia de la clase ProgressDialog yconfigurar sus propiedades.

    • Posteriormente, se crean los dos botones que se despliegan dentro del

    dialogo de progreso.

    Como funciona

    79

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    80/199

     

    • Este código produce el siguiente dialogo de progreso:

    Como funciona

    80

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    81/199

    • Para mostrar el estado de progreso en el diálogo de progreso, se

    puede utilizar un objeto de la clase Thread para ejecutar un bloqueRunnable de código:

    Como funciona

    81

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    82/199

    • Una aplicación Android puede contener cero o más actividades.

    Cuando la aplicación tiene más de una actividad, se necesita navegarde una actividad a otra.

    • En Android, se navega entre actividades a través de lo que se conoce

    como Intents.

    1.- En Eclipse, crea una nuevo proyecto Android llamado UsingIntent

    2.- Agrega una nueva clase al proyecto (Click derecho sobre el nombre

    del paquete dentro de la carpeta src y selecciona New Class)

    Enlazando Actividades usando Intents

    82

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    83/199

    3.- Nombra a la nueva clase SecondActivity y presiona Finish

    Enlazando Actividades usando Intents

    83

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    84/199

    4.- Agrega las siguientes sentencias en negrita al archivo

     AndroidManifest.xml:

    Enlazando Actividades usando Intents

    84

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    85/199

    Enlazando Actividades usando Intents

    85

    5.- Crea un archivo llamado secondactivity.xml en la carpeta res/layout y

    modifica el archivo con las siguientes líneas:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    86/199

    Enlazando Actividades usando Intents

    86

    6.- En el archivo SecondActivity.java agrega las siguientes líneas de

    código:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    87/199

    Enlazando Actividades usando Intents

    87

    7.- Agrega las siguientes líneas en negrita al archivo main.xml

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    88/199

    Enlazando Actividades usando Intents

    88

    7.- Modifica el archivo UsingIntentActivity.java con las siguientes líneas en

    negritas:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    89/199

    Enlazando Actividades usando Intents

    89

    8.- Presiona F-11 para ejecutar la aplicación sobre el emulador de

     Android:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    90/199

    Como funciona

    90

    • Una Activity esta integrada por un componente de la IU (main.xml) y

    un componente java (clase UsingIntentActivity.java).

    • Por lo tanto, si quieres agregar una actividad a tu aplicación se deben

    agregar estos dos componentes.

    • En el archivo AndroidManifest.xml se agregó lo siguiente:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    91/199

    Como funciona

    91

    • Cuando el boton “Display second activity” es seleccionado, se utiliza el

    método startActivity():

    • Las actividades en Android pueden ser invocadas por cualquieraplicación ejecutándose en el dispositivo a través de su nombre

    (action) del intent-filter

    • Si la actividad que se quiere invocar esta definida dentro del mismo

    proyecto se puede llamar también de la siguiente forma:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    92/199

    Resolviendo colisiones entre Intent-Filters

    92

    • El define como una actividad puede ser invocada. ¿Que

    sucede si otra actividad (en la misma o en otra aplicación) tiene elmismo nombre del filter? Por ejemplo:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    93/199

    Resolviendo colisiones entre Intent-Filters

    93

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    94/199

    Resolviendo colisiones entre Intent-Filters

    94

    • Si se llama al método startActivity() con el siguiente intent el SO

     Android desplegará una ventana de selección de actividades.

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    95/199

    Regresando resultados desde un Intent

    95

    • El método startActivity() invoca a otra actividad pero esta no regresa

    un resultado a la actividad que la llamó.

    • Si una actividad requiere esperar por datos que le devuelva una

    segunda actividad, se debe utilizar el método startActivityForResult().

    • El siguiente ejemplo ilustra esta escenario:

    1.- Utilizando el mismo proyecto de la previa sección, agrega las

    siguientes sentencias en negrita al archivo secondactivity.xml

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    96/199

    Regresando resultados desde un Intent

    96

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    97/199

    Regresando resultados desde un Intent

    97

    2.- Agrega las siguientes sentencias en negrita al archivo

    SecondActivity.java:

    R d lt d d d I t t

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    98/199

    Regresando resultados desde un Intent

    98

    R d lt d d d I t t

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    99/199

    Regresando resultados desde un Intent

    99

    3.- Agrega las siguientes sentencias en negrita al archivo

    UsingIntentActivity.java:

    R d lt d d d I t t

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    100/199

    Regresando resultados desde un Intent

    100

    R d lt d d d I t t

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    101/199

    Regresando resultados desde un Intent

    101

    4.- Presiona F-11 para ejecutar la aplicación en el emulador de Android:

    C f i

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    102/199

    Como funciona

    102

    • Para llamar a una actividad y esperar por un resultado de regreso de

    esta actividad, se necesita utilizar el método startActivityForResult():

    •  Además de pasar como argumento un objeto Intent, se requiere pasartambién un código de solicitud. Este código de solicitud es un valor

    entero que identifica a la actividad que se esta llamando.

    • El código de solicitud es necesario debido a que cuando una actividad

    regresa un valor, se debe de tener una manear de identificar laactividad.

    C f i

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    103/199

    Como funciona

    103

    • Con el objetivo de que una actividad regrese un valor a la actividad que

    la invoco, se utiliza un objeto Intent para enviar los datos de regreso víael método setData():

    Como f nciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    104/199

    Como funciona

    104

    • En la actividad que invoco a la segunda actividad, se necesita

    implementar el método onActivityResult(), el cual es llamado si unaactividad regresa un valor:

    Pasar datos usando un objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    105/199

    Pasar datos usando un objeto Intent

    105

    •  Además de regresar datos desde una actividad también es común

    pasar datos a una actividad.

    • En el ejemplo anterior se puede necesitar establecer algún texto por

    default en la vista del EditText antes de que la actividad es desplegada.

    • En este caso, se puede utilizar el objeto intent para pasar los datos a la

    actividad.

    • El siguiente ejemplo muestra como pasar datos a una actividad:

    1.- En eclipse, crea un nuevo proyecto Android llamada PassingData

    Pasar datos usando un objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    106/199

     

    2.- Agrega las siguientes sentencias al archivo main.xml:

    Pasar datos usando un objeto Intent

    106

    Pasar datos usando un objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    107/199

    3.- Crea un nuevo archivo XML a la carpeta res/layout llamado

    secondactivity.xml y agrega las siguientes líneas:

    Pasar datos usando un objeto Intent

    107

    Pasar datos usando un objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    108/199

    4.- Crea una nueva clase java llamada SecondActivity.java al paquete y

    modifica el archivo como sigue:

    Pasar datos usando un objeto Intent

    108

    Pasar datos usando un objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    109/199

    Pasar datos usando un objeto Intent

    109

    Pasar datos usando un objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    110/199

    5.- Agrega las siguientes sentencias en negrita al archivo

     AndroidManifest.xml:

    Pasar datos usando un objeto Intent

    110

    Pasar datos usando un objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    111/199

    5.- Agrega las siguientes sentencias en negrita al archivo

    PassingDataActivity.java y presiona F-11 para ejecutar el programa:

    Pasar datos usando un objeto Intent

    111

    Pasar datos usando un objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    112/199

    Pasar datos usando un objeto Intent

    112

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    113/199

    • Este ejemplo ilustra algunas maneras de pasar datos entre actividades.

    • Primero, se puede utilizar el método putExtra() de un objeto Intent para

    agregar un par nombre-valor.

    •  Además de poder utiliza el método putExtra(), se puede crear también

    un objeto Bundle y entonces agregar este al objeto Intent a través del

    método putExtras().

    • Considera al objeto Bundle como un objeto diccionario el cual contiene

    un conjunto de pares nombre-valor.

    Como funciona

    113

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    114/199

    • Las siguientes sentencias crean un objeto Bundle y entonces agregan

    dos pares de datos (nombre-valor). Posteriormente, el objeto Bundle esunido al objeto Intent.

    • En la segunda actividad, para obtener los datos enviados usando el

    objeto Intent, primero se obtiene el objeto Intent usando el método

    getIntent().

    Como funciona

    114

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    115/199

    • En este caso, se debe llamar al método apropiado para extraer el par

    nombre-valor con base en el tipo de dato enviado.

    • Para obtener el objeto Bundle, utiliza el método getExtras():

    • Para obtener los pares nombre-valor, utiliza los métodos apropiados.

    Para la cadena:

    • Para el valor entero:

    Como funciona

    115

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    116/199

    • Otra manera de pasar datos a una actividad es utilizando el método

    setData():

    • Generalmente, se utiliza el método setData() para asignar los datos

    sobre los cuales un objeto Intent va a trabajar.

    • Para obtener los datos establecidos por el método setData(), se utiliza

    el método getData(). En este caso data es un objeto Intent:

    Como funciona

    116

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    117/199

    • En dispositivos con pantallas pequeñas, una actividad llena la pantalla

    completamente desplegando las distintas Views que integran la IU deuna aplicación.

    • Cuando una actividad es mostrada en dispositivos con pantallas más

    grandes, tal como una tablet, se muestra fuera de lugar.

    • Debido a que la pantalla es más grande, todas las vistas en una

    actividad deben ser reordenadas para hacer un uso correcto del

    espacio incrementado.

    • Un enfoque más eficiente es tener “mini-actividades”,  cada una

    conteniendo su propio conjunto de vistas.

    Fragments

    117

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    118/199

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    119/199

    • La siguiente figura muestra dos fragments:

    a) Lista de libros b) Descripción del libro Dispositivo en modo portrait

    Fragments

    119

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    120/199

    • Si la aplicación es ahora desplegada en una tableta en modo

    landscape ambos fragments pueden ser empotrados en una solaactividad

    Dispositivo en modo landscape

    Fragments

    120

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    121/199

     

    • Los Fragments representan una forma versátil en la cual se puedecrear la interfaz de usuario de una aplicación Android.

    • En conclusión:

    • Los fragments forman la unidad atómica de una interfaz de usuario

    y puede ser agregados o removidos dinámicamente a las

    actividades con la finalidad de crear la mejor experiencia de usuario

    posible dependiendo del dispositivo.

    Fragments

    121

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    122/199

    1.- En Eclipse, crea un nuevo proyecto Android llamado Fragments

    2.- En la carpeta res/layout, crea un nuevo archivo llamado fragment1.xml

    y agrega las siguientes sentencias:

    Fragments

    122

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    123/199

    3.- También en la carpeta res/layout, crea otro archivo llamado

    fragment2.xml y agrega las siguientes sentencias:

    g

    123

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    124/199

    4.- En el archivo main.xml, agrega el siguiente código:

    g

    124

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    125/199

    5.- Dentro del nombre del paquete net.learn2develop.Fragments, agregar

    dos clases llamadas Fragment1.java y Fragment2.java

    6.- Agregar las siguientes sentencias a Fragment1.java:

    g

    125

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    126/199

    7.- Agrega las siguientes sentencias a Fragment2.java:

    g

    126

    Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    127/199

    8.- Presiona F-11 para ejecutar la aplicación sobre el emulador de Android

    g

    127

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    128/199

     

    • Un fragment se comporta como una actividad: tiene una clase java ycarga su IU desde un XML.

    • El archivo XMl contiene todos los elementos usuales de IU que una

    actividad puede tener tales como: TextView, EditText, Button, entre

    otros.

    • La clase java para un fragment necesita heredar de la clase base

    Fragment:

    128

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    129/199

    • Para dibujar la IU de un fragment, se debe sobre-escribir el métodoonCreateView(). Este método regresa un objeto View:

    • El objeto LayoutInflater rellena la IU desde el archivo XMLespecificado.

    • El argumento container se refiere al ViewGroup padre, el cual es la

    actividad en la que se esta intentando incrustar el fragment.

    • El argumento savedInstanceState permite restaurar el fragment a suestado guardado previamente

    129

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    130/199

    • Para agregar un fragment a una actividad se utiliza el elemento:

    • Cada fragment necesita un identificador

    130

     Agregando Fragments Dinámicamente

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    131/199

     

    • En la sección anterior, se mostró como se pueden agregar fragmentsa una actividad por modificar el archivo XML en tiempo de diseño.

    • En realidad, esto es mucho más útil si se crean los fragments y se

    agregan a las actividades en tiempo de ejecución.

    • Esto permite crear una IU personalizable para tu aplicación. Por

    ejemplo: si la aplicación se esta ejecutando sobre un Smartphone, se

    debería llenar la actividad con un solo fragment.

    • Por otro lado, si la aplicación se esta ejecutando sobre una tablet, se

    debería llenar al actividad con dos o más fragments.

    131

     Agregando Fragments en tiempo de ejecución

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    132/199

    1.- Utilizando el mismo proyecto creado en la previa sección, modifica el

    archivo main.xml por comentar los dos elementos :

    132

     Agregando Fragments en tiempo de ejecución

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    133/199

    2.- Agrega el siguiente código en negritas al archivo

    FragmentsActivity.java:

    133

     Agregando Fragments en tiempo de ejecución

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    134/199

    134

     Agregando Fragments en tiempo de ejecución

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    135/199

    3.- Presiona F-11 para ejecutar la aplicación sobre el emulador Android

    135

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    136/199

    • Para agregar fragments a una actividad, se debe utilizar la claseFragmentManager:

    • También se debe utilizar la clase FragmentTransaction para llevar acabo operaciones con los fragments:

    • En el ejemplo se utilizó el WindowManager para determinar si eldispositivo esta actualmente en modo portrait o landscape.

    • Se agrega el apropiado fragment a la actividad a través de crear elfragment y entonces llamar al método replace() del objetoFragmentTransaction para agregar el fragment al contenedor vistaespecificado.

    136

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    137/199

    • En este caso, android.R.id.content se refiere a la vista content de la

    actividad

    • Para asegurar que los cambios fueron realizados, se necesita llamar al

    método commit():

    137

    Ciclo de vida de un Fragment

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    138/199

    • Comprender el ciclo de vida de un Fragment te permite guardar

    apropiadamente una instancia de un fragment cuando es destruido yrestaurarlo a su estado previo cuando es re-creado.

    • El siguiente ejemplo examina los distintos estados experimentados por

    un Fragment

    1.- Utilizando el mismo proyecto creado en la sección anterior, agrega el

    siguiente código en negrita al archivo Fragment1.java:

    138

    Ciclo de vida de un Fragment

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    139/199

    139

    Ciclo de vida de un Fragment

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    140/199

    140

    Ciclo de vida de un Fragment

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    141/199

    141

    Ciclo de vida de un Fragment

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    142/199

    2.- Cambia el emulador de Android al modo landscape por presionar F-11

    3.- Presiona F-11 en Eclipse para ejecutar la aplicación en el emulador

    4.- Cuando la aplicación este cargada en el emulador, lo siguiente es

    desplegado en el ventana LogCat (Windows➪ Show View➪ LogCat):

    5.- Click sobre el boton Home del emulador. Lo siguiente será desplegadoen la ventana LogCat:

    142

    Ciclo de vida de un Fragment

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    143/199

    6.- En el emulador, click al botón home y mantenlo presionado, Click sobre

    tu aplicación y lo siguiente será mostrado:

    7.- finalmente, click sobre el botón back del emulador, ahora debe de

    mostrar los siguiente:

    143

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    144/199

    • Cuando un fragment esta siendo creado, el fragment pasa por lossiguientes estados:

     – onAttach()

     – onCreate()

     – onCreateView()

     – onActivityCreated()

    • Un fragment pasa a través de los siguientes estados cuando llega aestar visible:

     – onStart()

     – onResume()

    • Los siguientes estados son a travesados por un fragment cuando va almodo background:

     – onPause()

     – onStop()

    144

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    145/199

    • Cuando un fragment es destruido, este va a través de los siguientes

    estados: – onPause()

     – onStop()

     – onDestroyView()

     – onDestroy()

     – onDetach()

    •  Al igual que las actividades, se puede restaurar una instancia de un

    fragment usando un objeto Bundle en los siguientes estados:

     – onCreate()

     – onCreateView()

     – onActivityCreated()

    145

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    146/199

    • La mayoría de los estados experimentados por un fragment sonsimilares a los de una actividad; sin embargo, los siguientes sonespecíficos de los fragments:

     – onAttached(): Llamado cuando el fragment ha sido asociado con laactividad.

     – onCreateView(): Llamado para crear la vista para el fragment

     – onActivityCreated(): Llamado cuando el método OnCreate() de la actividadha sido regresado.

     – onDestroyView(): Llamado cuando la vista del fragment esta siendoremovida.

     – onDetach(): Llamado cuando el fragment es separado de la actividad

    146

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    147/199

    • Una de las principales diferencias entre actividades y fragments es que

    cuando una actividad va al background, la actividad es colocada en lapila de regreso.

    • Esto permite que la actividad sea reanudada cuando el usuario

    presiona el botón de regreso.

    • Los fragments, sin embargo, no son colocados automáticamente en la

    pila de regreso cuando se van al background.

    • Para colocar un fragment adentro de la pila, se necesita explícitamente

    llamar al método addToBackStack() durante una transacción

    147

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    148/199

    • Por ejemplo:

    148

    Interacciones entre Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    149/199

    • Una Actividad puede contener uno o más fragments trabajando juntos

    para presentar una IU coherente. En este caso, los fragments puedenrequerir comunicarse e intercambiar datos.

    • El siguiente ejemplo muestra como un fragment puede acceder a las

    vistas contenidas adentro de otro fragment.

    1.- Utilizando el proyecto anterior, agrega las siguientes sentencias en negrita al

    archivo fragment1.xml:

    149

    Interacciones entre Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    150/199

    2.- Agrega las siguientes sentencias en negrita al archivo fragment2.xml:

    150

    Interacciones entre Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    151/199

    3.- Agrega las siguientes líneas al archivo main.xml

    151

    Interacciones entre Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    152/199

    4.- Modifica el archivo FragmentsActivity.java por comentar el código que se

    agregó en la sección anterior:

    152

    Interacciones entre Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    153/199

    153

    Interacciones entre Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    154/199

    5.- Agrega las siguientes sentencias al archivo Fragment2.java:

    154

    Interacciones entre Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    155/199

    155

    Interacciones entre Fragments

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    156/199

    6.- Presiona F-11 para ejecutar la aplicación sobre el emulador Android. En el

    segundo fragment sobre la derecha, click en el botón:

    156

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    157/199

    • Debido a que los fragments están incrustados en las actividades, se

    puede obtener la actividad en la cual un fragment esta empotradoactualmente por:

    • Primero utilizar el método getActivity() y posteriormente

    • Utilizar el método findViewById() para localizar la vista contenida en el

    fragment

    •  Alternativamente, se puede agregar también el siguiente método al

    archivo FragmentsActivity.java:

    157

    Invocar aplicaciones integradas usando Intents

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    158/199

    • Uno de los aspectos claves de Android es utilizar los intents para

    invocar actividades de otras aplicaciones.

    • Nuestra aplicación puede llamar a las aplicaciones que están incluidas

    en el dispositivo Android.

    • Por ejemplo, si tu aplicación necesita cargar una página web, se puedeutilizar el objeto Intent para invocar el navegador integrado en el

    dispositivo para cargar la página web, en lugar de construir tu propia

    versión de navegador para este propósito.

    • El siguiente ejemplo muestra como llamar a algunas aplicacionesintegradas comúnmente en el dispositivo Android

    158

    Invocar aplicaciones integradas usando Intents

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    159/199

    1.- En eclipse crea un nuevo proyecto Android y nómbralo Intents

    2.- Agrega las siguientes sentencias al archivo main.xml

    159

    Invocar aplicaciones integradas usando Intents

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    160/199

    3.- Agrega las siguientes sentencias en negrita al archivo

    IntentsActivity.java:

    160

    Invocar aplicaciones integradas usando Intents

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    161/199

    161

    4 P i F 11 j t l li ió b l l d d A d id

    Invocar aplicaciones integradas usando Intents

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    162/199

    4.- Presiona F-11 para ejecutar la aplicación sobre el emulador de Android.

    Click sobre los botones web browser, make calls y show map para cargar

    la aplicaciones sobre el emulador:

    162

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    163/199

     

    • En este ejemplo, se mostró como utilizar la clase Intent para llamar aalgunas aplicaciones integradas por default en el SO Android tales

    como mapas, teléfono, contactos y navegador web.

    • En Android los Intent vienen en pares: action y data. El action describe

    lo que se va a llevar a cabo tal como editar un elemento, visualizar elcontenido de un elemento, entre otros.

    • Los data especifican lo que es afectado tal como los datos de una

    persona en la base de datos de contactos.

    • Los data son especificados como un objeto Uri

    163

    Algunos ejemplos de action son:

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    164/199

    •  Algunos ejemplos de action son:

     –  ACTION_VIEW

     –  ACTION_DIAL

     –  ACTION_PICK

    •  Algunos ejemplos de data incluyen los siguientes:

     – www.google.com

     – tel:+651234567

     – geo:37.827500,-122.481670

     – content://contacts

    164

    El ti d t d ib l ió li d

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    165/199

    • El par action y data describe la operación a ser realizada:

     – Para marcar un número telefónico se debería utilizar el par

     ACTION_DIAL/tel:+651234567

     – Para desplegar una lista de contactos almacenada en el teléfono, se utiliza

    el par ACTION_VIEW/content://contacts

     – Para seleccionar un contacto de la lista de contactos, se utiliza el par

     ACTION_PICK/content://contacts

    • En el primer botón, se crea un objeto Intent y entonces se pasan dos

    argumentos a su constructor, el action y data:

    165

    El ódi t i d ibi d l i i t f

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    166/199

    • El código anterior se puede re-escribir de la siguiente forma:

    • En el segundo botón, se marca un número específico por pasar como

    argumento en el data el número telefónico:

    • Si requiere llamar al número sin intervención del usuario se debe

    cambiar el action como sigue:

    166

    Para desplegar el marcador de números sin especificar algún número

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    167/199

    • Para desplegar el marcador de números sin especificar algún número

    simplemente omite la porción de data:

    • El tercer botón despliega un mapa usando la constante ACTION_VIEW:

    167

     Análisis del uso del objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    168/199

     

    • Primero, se aprendió que se puede llamar a otra actividad por pasar suaction al constructor de un objeto Intent:

    • El action, en este ejemplo “net.learn2develop.SecondActivity”,  es

    también conocido como el nombre del componente. Este es utilizadopara identificar la aplicación/actividad target que quieres invocar.

    • Se puede también re-escribir el código anterior por especificar el

    nombre de la actividad si este reside en el mismo proyecto:

    168

     Análisis del uso del objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    169/199

     

    • Se puede crear un objeto Intent por pasar un action y data:

    • También se puede pasar los datos a través del método setData():

    • El SO Android buscará todas las actividades que son capaces de

    satisfacer tu solitud. Este proceso es conocido como resolución deintents

    169

    • Para algunos intents no hay necesidad de especificar los data Por

     Análisis del uso del objeto Intent

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    170/199

    • Para algunos intents, no hay necesidad de especificar los data. Porejemplo para seleccionar un contacto de la aplicación de contactos, se

    puede especificar el action y entonces indicar el tipo MIME utilizando elsetType():

    • El método setType() explícitamente especifica el tipo de datos MIMEpara indicar el tipo de datos a regresar.

    •  Además de especificar el action, data y el type, un objeto intent puedeespecificar también una categoría.

    • Una categoría agrupa actividades en unidades lógicas, lo cual se utilizapara realizar filtrado

    170

    • Con la finalidad de que otras actividades invoquen una actividad se

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    171/199

    • Con la finalidad de que otras actividades invoquen una actividad, se

    necesitan especificar el action y category adentro del elemento en el archivo AndroidManifest.xml:

    • Especificar intent filters a detalle:

    1.- Utilizando el proyecto Intents creado anteriormente, agrega una nueva

    clase al proyecto y nómbrala MyBrowserActivity.java.

     Además, agrega un nuevo archivo XML llamado browser.xml a la carpeta

    res/layout

    171

    2 Agrega las siguientes sentencias al archivo AndroidManifest xml:

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    172/199

    2.- Agrega las siguientes sentencias al archivo AndroidManifest.xml:

    172

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    173/199

    173

    3 - Agrega las siguientes sentencias al archivo main xml:

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    174/199

    3.- Agrega las siguientes sentencias al archivo main.xml:

    174

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    175/199

    175

    4 - Agrega las siguientes sentencias en negrita al archivo

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    176/199

    4.- Agrega las siguientes sentencias en negrita al archivo

    IntentsActivity.java:

    176

    5 - Agrega las siguientes sentencias en negrita al archivo browser xml:

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    177/199

    5. Agrega las siguientes sentencias en negrita al archivo browser.xml:

    6.- Agrega las siguientes sentencias en negrita al archivo

    MyBrowserActivity.java:

    177

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    178/199

    178

    7 - Presiona F-11 para ejecutar la aplicación en el emulador de Android y

    Uso de los intent filters

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    179/199

    7. Presiona F 11 para ejecutar la aplicación en el emulador de Android y

    click sobre el botón Launch my Browser

    179

    • En este ejemplo, primero se creo una actividad llamada

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    180/199

    En este ejemplo, primero se creo una actividad llamada

    MyBrowserActivity y se declaró en el archivo AndroidManifest.xml

    • En este caso, se declaran dos action, una category y un data.

    180

    • Si ahora se usa el action ACTION VIEW:

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    181/199

    Si ahora se usa el action ACTION_VIEW:

    •  Android desplegará la siguiente selección:

    181

    • Se hace notar que cuando múltiples actividades pueden atender el

    Como funciona

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    182/199

    Se hace notar que cuando múltiples actividades pueden atender el

    objeto intent, la ventana de diálogo “Complete action using” aparece.

    • Se puede personalizar esta ventana a través de utilizar el método

    createChooser() de la clase intent:

    • Esto produce el siguiente cambio en la ventana de dialogo:

    182

    • Se pueden agrupar actividades en categorías por utilizar el elemento

     Agregar Categorías

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    183/199

    p g p g p

    en el intent filter. Supón que se agrega el siguiente

    elemento al archivo AndroidManifest.xml:

    183

     Agregar Categorías

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    184/199

    184

     Agregar Categorías

    • El siguiente código invocará la actvidad MyBrowerActivity:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    185/199

    185

    g g y y

    • Se agrega la categoría al objeto Intent usando el método

    addcategory(). Si se omite la sentencia addcategory() el código aún

    invocará a la actividad MyBrowerActivity.

    • Si se especifica una categoría que no hace un match con la categoría

    definida en el intent-filter el código no funcionará:

     Agregar Categorías

    •  Al agregar la siguiente categoría en el intent filter de MyBrowerActivity,

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    186/199

    186

    g g g g y y,

    el código anterior trabajará sin problemas:

    • Se pueden agregar múltiples categorías a un objeto Intent; por ejemplo

    las siguientes sentencias agregan la categoría

    net.learn2develop.SomeOtherApps al objeto Intent:

     Agregar Categorías

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    187/199

    187

    • Este código no será capaz de invocar a la actividad MyBrowerActivity:

    • Se hace notar que cuando se utiliza un objeto Intent con categorías,

    todas las categorías agregadas al objeto Intent deben estar definidas

    en el inter-filter antes de que un actividad puedas ser invocada.

    Desplegar notificaciones

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    188/199

    188

    • En los ejemplos anteriores se ha estado utilizando la clase Toast. Esta

    clase es una manera práctica de mostrar alertas a los usuarios; sin

    embargo, no es persistente.

    • Para mensajes que son importantes, se debería utilizar un método

    persistente.

    • En este caso, se debe utilizar el NotificationManager para desplegar un

    mensaje persistente sobre la parte superior del dispositivo,

    comúnmente conocida como barra de estado (status bar) o también

    llamada barra de notificación

    Desplegar notificaciones

    1.- En Eclipse, crea un proyecto Android llamado Notifications

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    189/199

    189

    2.- Agrega una nueva clase llamada NotificationView al paquete. Además,

    agrega un nuevo archivo notification.xml a la carpeta res/layout

    3.- Agrega las siguientes sentencias de código al archivo notification.xml:

    Desplegar notificaciones

    4.- Modifica el archivo NotificationView.java como sigue:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    190/199

    190

    Desplegar notificaciones

    5.- Agrega las siguientes sentencias en negritas al archivo

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    191/199

    191

     AndroidManifest.xml:

    Desplegar notificaciones

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    192/199

    192

    6.- Agrega las siguientes sentencias al archivo main.xml:

    Desplegar notificaciones

    7.- Finalmente, agrega las siguientes sentencias al archivo

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    193/199

    193

    NotificationsActivity.java:

    Desplegar notificaciones

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    194/199

    194

    Desplegar notificaciones

    8.- Presiona F-11 para ejecutar la aplicación sobre el emulador de Android.

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    195/199

    195

    Click sobre el botón Display Notification y un texto de notificación

    aparecerá en la barra de estado:

    9.- Arrastrando la barra de estado hacia abajo mostrará los detalles de la

    notificación

    Como funciona

    • Para desplegar una notificación, primero se creo un objeto Intent queapunta a la actividad NotificationView:

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    196/199

    196

    apunta a la actividad NotificationView:

    • Posteriormente se crea también un objeto PendingIntent:

    • El método getActivity() regresa un objeto PendingIntent y recibe lossiguientes argumentos:• context: contexto de aplicación

    • request code: código de solicitud para el intent• intent: el intent para enlazar a la actividad target

    • flags: los modos en los cuales la actividad será enlanzada

    Como funciona

    • Se obtiene una instancia de la clase NotificationManager y se crea una

    i i d l l N ifi i

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    197/199

    197

    instancia de la clase Notification:

    • La clase Notification permite especificar la información principal de la

    notificación cuando esta aparece por primera vez en la barra de estado.

    Como funciona

    • Posteriormente, se definen los detalles de la notificación usando el

    ét d tL t tE tI f ()

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    198/199

    198

    método setLatestEventInfo():

    • Finalmente para desplegar la notificación se utiliza el método notify():

    • Cuando el usuario selecciona la notificación, la actividad

    NotificationView es invocada.

    Como funciona

    • Posteriormente, se desaparece la notificación a través de utilizar el

    ét d l() d l bj t N tifi ti M d l ID d l

  • 8/18/2019 Introduccion a Android y Activities, Fragments e Intents

    199/199

    método cancel() del objeto NotificationManager y pasando el ID de la

    notificación: