[{"data":1,"prerenderedAt":619},["ShallowReactive",2],{"navigation_docs":3,"-movil-intentions":298,"-movil-intentions-surround":614},[4,18,70,105,149,178,212,257],{"title":5,"path":6,"stem":7,"children":8,"icon":17},"Evaluación","\u002Fintroduction","1.introduction\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"icon":11},"Método de Evaluación","i-iconamoon-cheque-bold",{"title":13,"path":14,"stem":15,"icon":16},"Plataforma de Aprendizaje","\u002Fintroduction\u002Fplataforma","1.introduction\u002F2.plataforma","i-lucide-book-marked","i-lucide-house",{"title":19,"path":20,"stem":21,"children":22,"icon":25},"Interfaz Gráfica de Usuario","\u002Fgui","2.gui\u002F01.index",[23,26,30,34,38,42,46,50,54,58,62,66],{"title":24,"path":20,"stem":21,"icon":25},"¿Qué es una Interfaz Gráfica de Usuario (GUI)?","i-carbon-gui-management",{"title":27,"path":28,"stem":29,"icon":25},"Creación de Interfaces Gráficas de Usuario (GUI)","\u002Fgui\u002Fbuild-gui","2.gui\u002F02.build-gui",{"title":31,"path":32,"stem":33,"icon":25},"Componentes Básicos de Swing","\u002Fgui\u002Fcomponentes-basicos","2.gui\u002F03.componentes-basicos",{"title":35,"path":36,"stem":37},"El componente JFrame","\u002Fgui\u002Fjframe","2.gui\u002F04.jframe",{"title":39,"path":40,"stem":41},"El componente JPanel","\u002Fgui\u002Fjpanel","2.gui\u002F05.jpanel",{"title":43,"path":44,"stem":45},"El componente JButton","\u002Fgui\u002Fjbutton","2.gui\u002F06.jbutton",{"title":47,"path":48,"stem":49,"icon":25},"Elementos de texto en interfaces gráficas con Swing","\u002Fgui\u002Ftext","2.gui\u002F07.text",{"title":51,"path":52,"stem":53},"Elementos Visuales","\u002Fgui\u002Felementos-visuales","2.gui\u002F08.elementos-visuales",{"title":55,"path":56,"stem":57,"icon":25},"Eventos en Swing","\u002Fgui\u002Feventos","2.gui\u002F09.eventos",{"title":59,"path":60,"stem":61,"icon":25},"Controles en Swing","\u002Fgui\u002Fcontroles","2.gui\u002F10.controles",{"title":63,"path":64,"stem":65,"icon":25},"Atributos Comunes de los Componentes de Diseño","\u002Fgui\u002Fatributos-comunes","2.gui\u002F11.atributos-comunes",{"title":67,"path":68,"stem":69,"icon":25},"Layouts","\u002Fgui\u002Flayout","2.gui\u002F12.layout",{"title":71,"icon":25,"path":72,"stem":73,"children":74,"page":104},"Personalización","\u002Fpersonalizacion","3.personalizacion",[75,79,84,88,92,96,100],{"title":76,"path":77,"stem":78},"Jerarquía de clases en Swing","\u002Fpersonalizacion\u002Fjerarquia","3.personalizacion\u002F01.jerarquia",{"title":80,"path":81,"stem":82,"icon":83},"Personalización Inicial de Componentes Swing","\u002Fpersonalizacion\u002Fpersonalizacion-inicial","3.personalizacion\u002F02.personalizacion-inicial","i-carbon-palette",{"title":85,"path":86,"stem":87,"icon":83},"Tema y Personalización Avanzada en Swing","\u002Fpersonalizacion\u002Ftheme","3.personalizacion\u002F03.theme",{"title":89,"path":90,"stem":91,"icon":83},"Pintando en Swing","\u002Fpersonalizacion\u002Fpaint","3.personalizacion\u002F04.paint",{"title":93,"path":94,"stem":95,"icon":83},"Mi Tema 1: Comenzando con la Personalización","\u002Fpersonalizacion\u002Ftheme-start","3.personalizacion\u002F05.theme-start",{"title":97,"path":98,"stem":99,"icon":83},"UI Delegates: Personalizando la Apariencia de los Componentes","\u002Fpersonalizacion\u002Fui-delegates","3.personalizacion\u002F06.ui-delegates",{"title":101,"path":102,"stem":103,"icon":83},"Empleado delegadores de UI para personalizar la apariencia de los componentes","\u002Fpersonalizacion\u002Ftheme-02","3.personalizacion\u002F07.theme-02",false,{"title":106,"path":107,"stem":108,"children":109,"icon":148},"Programación concurrente","\u002Fconcurrencia","4.concurrencia\u002F01.index",[110,112,116,120,124,128,132,136,140,144],{"title":111,"path":107,"stem":108,"icon":83},"¿Qué es la concurrencia?",{"title":113,"path":114,"stem":115,"icon":83},"Unidades de Ejecución","\u002Fconcurrencia\u002Funidades-ejecucion","4.concurrencia\u002F02.unidades-ejecucion",{"title":117,"path":118,"stem":119,"icon":83},"Programa de flujo único y de flujo múltiple","\u002Fconcurrencia\u002Fflujos","4.concurrencia\u002F03.flujos",{"title":121,"path":122,"stem":123,"icon":83},"Hilos con Thread y Runnable","\u002Fconcurrencia\u002Fthread-runnable","4.concurrencia\u002F04.thread-runnable",{"title":125,"path":126,"stem":127},"Paralelismo V.S. Concurrencia","\u002Fconcurrencia\u002Fparalelismo","4.concurrencia\u002F05.paralelismo",{"title":129,"path":130,"stem":131,"icon":83},"Problemas clásicos de concurrencia","\u002Fconcurrencia\u002Fproblemas","4.concurrencia\u002F06.problemas",{"title":133,"path":134,"stem":135,"icon":83},"Emulando condiciones de carrera en Java","\u002Fconcurrencia\u002Fcondiciones-carrera","4.concurrencia\u002F07.condiciones-carrera",{"title":137,"path":138,"stem":139,"icon":83},"Semáforos en Java","\u002Fconcurrencia\u002Fsemaforos","4.concurrencia\u002F08.semaforos",{"title":141,"path":142,"stem":143,"icon":83},"La clase Timer en Java Swing","\u002Fconcurrencia\u002Ftimer","4.concurrencia\u002F09.timer",{"title":145,"path":146,"stem":147,"icon":83},"Algoritmos de ordenamiento de procesos","\u002Fconcurrencia\u002Falgoritmos-procesos","4.concurrencia\u002F10.algoritmos-procesos","i-carbon-parallel-groups",{"title":150,"path":151,"stem":152,"children":153,"icon":177},"Acceso a datos","\u002Fdatos","5.datos\u002F01.index",[154,157,161,165,169,173],{"title":155,"path":151,"stem":152,"icon":156},"Java y las bases de datos","i-carbon-database",{"title":158,"path":159,"stem":160},"Cliente Servidor","\u002Fdatos\u002Fcliente-servidor","5.datos\u002F02.cliente-servidor",{"title":162,"path":163,"stem":164},"CRUD","\u002Fdatos\u002Fcrud","5.datos\u002F03.crud",{"title":166,"path":167,"stem":168},"Sentencias Preparadas con JDBC","\u002Fdatos\u002Fsentencia-preparada","5.datos\u002F04.sentencia-preparada",{"title":170,"path":171,"stem":172},"DAO (Data Access Object)","\u002Fdatos\u002Fdao","5.datos\u002F05.dao",{"title":174,"path":175,"stem":176},"Usando Hibernate ORM","\u002Fdatos\u002Form","5.datos\u002F06.orm","i-gravity-ui-database-fill",{"title":179,"path":180,"stem":181,"children":182,"icon":211},"Programación móvil","\u002Fmovil","6.movil\u002F01.index",[183,186,191,195,199,203,207],{"title":184,"path":180,"stem":181,"icon":185},"¿Qué es Android y Kotlin?","i-carbon-mobile",{"title":187,"path":188,"stem":189,"icon":190},"¿Qué es Android Studio?","\u002Fmovil\u002Fandroid-studio","6.movil\u002F02.android-studio","i-carbon-application",{"title":192,"path":193,"stem":194,"icon":190},"¿Qué es Jetpack Compose?","\u002Fmovil\u002Fjetpack-compose","6.movil\u002F03.jetpack-compose",{"title":196,"path":197,"stem":198},"Filas y Columnas con Jetpack Compose","\u002Fmovil\u002Ffilas-columnas","6.movil\u002F04.filas-columnas",{"title":200,"path":201,"stem":202,"icon":190},"Componentes Básicos en Jetpack Compose","\u002Fmovil\u002Fcomponentes-basicos","6.movil\u002F05.componentes-basicos",{"title":204,"path":205,"stem":206,"icon":190},"Las Intenciones en Android con Jetpack Compose","\u002Fmovil\u002Fintentions","6.movil\u002F06.intentions",{"title":208,"path":209,"stem":210,"icon":190},"Navegación en Android con Jetpack Compose","\u002Fmovil\u002Fnavegacion","6.movil\u002F07.navegacion","phone_android",{"title":213,"icon":25,"path":214,"stem":215,"children":216,"page":104},"Ejemplos","\u002Fejemplos","7.ejemplos",[217,221,225,229,233,237,241,245,249,253],{"title":218,"path":219,"stem":220},"Ejemplo 01: Creando un validador abstracto de expresiones","\u002Fejemplos\u002Fejemplo-01","7.ejemplos\u002F01.ejemplo-01",{"title":222,"path":223,"stem":224},"Ejemplo 02: Diferencias de validar un JTextField y un JFormattedTextField","\u002Fejemplos\u002Fejemplo-02","7.ejemplos\u002F02.ejemplo-02",{"title":226,"path":227,"stem":228},"Ejemplo 03: Creando una Aplicación con GUI en Java Swing","\u002Fejemplos\u002Fejemplo-03","7.ejemplos\u002F03.ejemplo-03",{"title":230,"path":231,"stem":232},"Ejemplo 4: Estilizando componentes Swing con Delegadores","\u002Fejemplos\u002Fejemplo-04","7.ejemplos\u002F04.ejemplo-04",{"title":234,"path":235,"stem":236,"icon":83},"Ejemplo 5: Uso de Hilos con Thread y Runnable","\u002Fejemplos\u002Fejemplo-05","7.ejemplos\u002F05.ejemplo-05",{"title":238,"path":239,"stem":240,"icon":83},"Ejemplo 06: Manejando Hilos de formas Diferentes en Java","\u002Fejemplos\u002Fejemplo-06","7.ejemplos\u002F06.ejemplo-06",{"title":242,"path":243,"stem":244,"icon":83},"Ejemplo 7: Condiciones de carrera en Java","\u002Fejemplos\u002Fejemplo-07","7.ejemplos\u002F07.ejemplo-07",{"title":246,"path":247,"stem":248,"icon":83},"Ejemplo 8: Control de acceso a recursos compartidos con semáforos","\u002Fejemplos\u002Fejemplo-08","7.ejemplos\u002F08.ejemplo-08",{"title":250,"path":251,"stem":252,"icon":83},"Ejemplo 9: El restaurante y los pedidos","\u002Fejemplos\u002Fejemplo-09","7.ejemplos\u002F09.ejemplo-09",{"title":254,"path":255,"stem":256},"Ejemplo 10: Proceso FIFO (First In, First Out) con Semáforos y Swing","\u002Fejemplos\u002Fejemplo-10","7.ejemplos\u002F10.ejemplo-10",{"title":258,"icon":25,"path":259,"stem":260,"children":261,"page":104},"Actividades","\u002Factividades","8.actividades",[262,266,270,274,278,282,286,290,294],{"title":263,"path":264,"stem":265,"icon":25},"Actividad 1: Introducción al diseño de interfaces","\u002Factividades\u002Fact-01","8.actividades\u002F01.act-01",{"title":267,"path":268,"stem":269,"icon":25},"Actividad 2: Diseño de wireframes y prototipos","\u002Factividades\u002Fact-02","8.actividades\u002F02.act-02",{"title":271,"path":272,"stem":273,"icon":25},"Actividad 3: Propuesta de Proyecto y Wireframe inicial","\u002Factividades\u002Fact-03","8.actividades\u002F03.act-03",{"title":275,"path":276,"stem":277,"icon":83},"Actividad 4: Temas y Componentes Personalizados en Swing","\u002Factividades\u002Fact-04","8.actividades\u002F04.act-04",{"title":279,"path":280,"stem":281,"icon":83},"Actividad 5: Explicando la Concurrencia a un Niño de 5 Años","\u002Factividades\u002Fact-05","8.actividades\u002F05.act-05",{"title":283,"path":284,"stem":285,"icon":83},"Actividad 6: Simulación de una cocina con múltiples chefs (hilos)","\u002Factividades\u002Fact-06","8.actividades\u002F06.act-06",{"title":287,"path":288,"stem":289,"icon":83},"Actividad 7: Sistema de retiro bancario","\u002Factividades\u002Fact-07","8.actividades\u002F07.act-07",{"title":291,"path":292,"stem":293,"icon":83},"Actividad 8: Simulación de Round Robin con hilos e Interfaz Gráfica","\u002Factividades\u002Fact-08","8.actividades\u002F08.act-08",{"title":295,"path":296,"stem":297,"icon":83},"Actividad 9: CRUD con Hibernate y Swing","\u002Factividades\u002Fact-09","8.actividades\u002F09.act-09",{"id":299,"title":204,"body":300,"description":607,"extension":608,"links":609,"meta":610,"navigation":611,"path":205,"seo":612,"stem":206,"__hash__":613},"docs\u002F6.movil\u002F06.intentions.md",{"type":301,"value":302,"toc":600},"minimark",[303,307,312,315,319,327,398,412,416,423,476,489,521,531,535,538,586,589,593,596],[304,305,306],"p",{},"En Android, las intenciones (Intents) son una herramienta fundamental para la navegación entre pantallas y la realización de acciones específicas. Con Jetpack Compose, puedes utilizar las intenciones de manera sencilla para crear una experiencia de usuario fluida y dinámica. A continuación, te mostraré cómo utilizar las intenciones en Android con Jetpack Compose.",[308,309,311],"h2",{"id":310},"qué-es-una-intención","¿Qué es una Intención?",[304,313,314],{},"Una intención es un objeto que representa una acción que deseas realizar, como abrir una nueva pantalla, enviar un mensaje o iniciar una actividad. Las intenciones pueden ser explícitas, donde especificas la clase de destino, o implícitas, donde el sistema determina qué aplicación puede manejar la acción.",[308,316,318],{"id":317},"navegación-entre-pantallas-con-intenciones","Navegación entre Pantallas con Intenciones",[304,320,321,322,326],{},"Para navegar entre pantallas utilizando intenciones en Jetpack Compose, puedes utilizar la función ",[323,324,325],"code",{},"startActivity"," dentro de un evento de clic. Aquí tienes un ejemplo básico:",[328,329,334],"pre",{"className":330,"code":331,"language":332,"meta":333,"style":333},"language-kotlin shiki shiki-themes github-dark","@Composable\nfun MainScreen() {\n    val context = LocalContext.current\n    Button(onClick = {\n        val intent = Intent(context, SecondScreen::class.java)\n        context.startActivity(intent)\n    }) {\n        Text(\"Ir a la Segunda Pantalla\")\n    }\n}\n","kotlin","",[323,335,336,344,350,356,362,368,374,380,386,392],{"__ignoreMap":333},[337,338,341],"span",{"class":339,"line":340},"line",1,[337,342,343],{},"@Composable\n",[337,345,347],{"class":339,"line":346},2,[337,348,349],{},"fun MainScreen() {\n",[337,351,353],{"class":339,"line":352},3,[337,354,355],{},"    val context = LocalContext.current\n",[337,357,359],{"class":339,"line":358},4,[337,360,361],{},"    Button(onClick = {\n",[337,363,365],{"class":339,"line":364},5,[337,366,367],{},"        val intent = Intent(context, SecondScreen::class.java)\n",[337,369,371],{"class":339,"line":370},6,[337,372,373],{},"        context.startActivity(intent)\n",[337,375,377],{"class":339,"line":376},7,[337,378,379],{},"    }) {\n",[337,381,383],{"class":339,"line":382},8,[337,384,385],{},"        Text(\"Ir a la Segunda Pantalla\")\n",[337,387,389],{"class":339,"line":388},9,[337,390,391],{},"    }\n",[337,393,395],{"class":339,"line":394},10,[337,396,397],{},"}\n",[304,399,400,401,404,405,407,408,411],{},"En este ejemplo, hemos creado un botón que, al hacer clic, crea una intención explícita para abrir la ",[323,402,403],{},"SecondScreen",". Asegúrate de que la ",[323,406,403],{}," esté definida en tu proyecto y registrada en el archivo ",[323,409,410],{},"AndroidManifest.xml",".",[308,413,415],{"id":414},"enviar-datos-entre-pantallas-con-intenciones","Enviar Datos entre Pantallas con Intenciones",[304,417,418,419,422],{},"Puedes enviar datos entre pantallas utilizando intenciones. Para hacerlo, puedes agregar datos a la intención utilizando el método ",[323,420,421],{},"putExtra",". Aquí tienes un ejemplo:",[328,424,426],{"className":330,"code":425,"language":332,"meta":333,"style":333},"@Composable\nfun MainScreen() {\n    val context = LocalContext.current\n    Button(onClick = {\n        val intent = Intent(context, SecondScreen::class.java)\n        intent.putExtra(\"EXTRA_MESSAGE\", \"¡Hola desde la MainScreen!\")\n        context.startActivity(intent)\n    }) {    \n        Text(\"Enviar Mensaje a la Segunda Pantalla\")\n    }\n}\n",[323,427,428,432,436,440,444,448,453,457,462,467,471],{"__ignoreMap":333},[337,429,430],{"class":339,"line":340},[337,431,343],{},[337,433,434],{"class":339,"line":346},[337,435,349],{},[337,437,438],{"class":339,"line":352},[337,439,355],{},[337,441,442],{"class":339,"line":358},[337,443,361],{},[337,445,446],{"class":339,"line":364},[337,447,367],{},[337,449,450],{"class":339,"line":370},[337,451,452],{},"        intent.putExtra(\"EXTRA_MESSAGE\", \"¡Hola desde la MainScreen!\")\n",[337,454,455],{"class":339,"line":376},[337,456,373],{},[337,458,459],{"class":339,"line":382},[337,460,461],{},"    }) {    \n",[337,463,464],{"class":339,"line":388},[337,465,466],{},"        Text(\"Enviar Mensaje a la Segunda Pantalla\")\n",[337,468,469],{"class":339,"line":394},[337,470,391],{},[337,472,474],{"class":339,"line":473},11,[337,475,397],{},[304,477,478,479,481,482,484,485,488],{},"En este ejemplo, hemos agregado un mensaje a la intención utilizando ",[323,480,421],{},". En la ",[323,483,403],{},", puedes recuperar este mensaje utilizando el método ",[323,486,487],{},"getStringExtra",":",[328,490,492],{"className":330,"code":491,"language":332,"meta":333,"style":333},"@Composable\nfun SecondScreen() {\n    val context = LocalContext.current\n    val message = context.intent.getStringExtra(\"EXTRA_MESSAGE\") ?: \"No se recibió ningún mensaje\"\n    Text(message)\n}   \n",[323,493,494,498,503,507,512,517],{"__ignoreMap":333},[337,495,496],{"class":339,"line":340},[337,497,343],{},[337,499,500],{"class":339,"line":346},[337,501,502],{},"fun SecondScreen() {\n",[337,504,505],{"class":339,"line":352},[337,506,355],{},[337,508,509],{"class":339,"line":358},[337,510,511],{},"    val message = context.intent.getStringExtra(\"EXTRA_MESSAGE\") ?: \"No se recibió ningún mensaje\"\n",[337,513,514],{"class":339,"line":364},[337,515,516],{},"    Text(message)\n",[337,518,519],{"class":339,"line":370},[337,520,397],{},[304,522,523,524,527,528,530],{},"En este ejemplo, hemos recuperado el mensaje enviado desde la ",[323,525,526],{},"MainScreen"," y lo mostramos en la ",[323,529,403],{},". Si no se recibió ningún mensaje, se mostrará un mensaje predeterminado.",[308,532,534],{"id":533},"realizar-acciones-específicas-con-intenciones-implícitas","Realizar Acciones Específicas con Intenciones Implícitas",[304,536,537],{},"Las intenciones implícitas permiten realizar acciones específicas sin especificar una clase de destino. Por ejemplo, puedes abrir un navegador web utilizando una intención implícita:",[328,539,541],{"className":330,"code":540,"language":332,"meta":333,"style":333},"@Composable\nfun OpenBrowserButton() {\n    val context = LocalContext.current\n    Button(onClick = {\n        val intent = Intent(Intent.ACTION_VIEW, Uri.parse(\"https:\u002F\u002Fwww.google.com\"))\n        context.startActivity(intent)\n    }) {\n        Text(\"Abrir Navegador\")\n    }\n}\n",[323,542,543,547,552,556,560,565,569,573,578,582],{"__ignoreMap":333},[337,544,545],{"class":339,"line":340},[337,546,343],{},[337,548,549],{"class":339,"line":346},[337,550,551],{},"fun OpenBrowserButton() {\n",[337,553,554],{"class":339,"line":352},[337,555,355],{},[337,557,558],{"class":339,"line":358},[337,559,361],{},[337,561,562],{"class":339,"line":364},[337,563,564],{},"        val intent = Intent(Intent.ACTION_VIEW, Uri.parse(\"https:\u002F\u002Fwww.google.com\"))\n",[337,566,567],{"class":339,"line":370},[337,568,373],{},[337,570,571],{"class":339,"line":376},[337,572,379],{},[337,574,575],{"class":339,"line":382},[337,576,577],{},"        Text(\"Abrir Navegador\")\n",[337,579,580],{"class":339,"line":388},[337,581,391],{},[337,583,584],{"class":339,"line":394},[337,585,397],{},[304,587,588],{},"En este ejemplo, hemos creado una intención implícita para abrir el navegador web con la URL especificada. El sistema determinará qué aplicación puede manejar esta acción y abrirá el navegador predeterminado del usuario.",[308,590,592],{"id":591},"conclusión","Conclusión",[304,594,595],{},"Las intenciones son una herramienta poderosa en Android para navegar entre pantallas y realizar acciones específicas. Con Jetpack Compose, puedes utilizar las intenciones de manera sencilla para crear una experiencia de usuario fluida y dinámica. Ya sea que estés navegando entre pantallas o realizando acciones específicas, las intenciones te permiten construir aplicaciones Android más interactivas y funcionales. Asegúrate de explorar más sobre las intenciones y cómo pueden mejorar la navegación y la funcionalidad de tus aplicaciones Android con Jetpack Compose.",[597,598,599],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":333,"searchDepth":346,"depth":346,"links":601},[602,603,604,605,606],{"id":310,"depth":346,"text":311},{"id":317,"depth":346,"text":318},{"id":414,"depth":346,"text":415},{"id":533,"depth":346,"text":534},{"id":591,"depth":346,"text":592},"Aprende a utilizar las intenciones en Android para navegar entre pantallas y realizar acciones específicas utilizando Jetpack Compose.","md",null,{},{"icon":190},{"title":204,"description":607},"zF6997MIBksbYUzebciKMxV_TgkzXQhvytU9rKcXl_Q",[615,617],{"title":200,"path":201,"stem":202,"description":616,"icon":190,"children":-1},"Aprende a utilizar los componentes básicos de Jetpack Compose para construir interfaces de usuario en Android.",{"title":208,"path":209,"stem":210,"description":618,"icon":190,"children":-1},"Aprende a implementar la navegación entre pantallas en Android utilizando Jetpack Compose y el componente de navegación.",1775101375027]