# FAQ — Preguntas Frecuentes

> Respuestas breves a las dudas más comunes de CrossFly, cada una con enlace a la página canónica.

Source: https://crossfly.dev/es/docs/faq/perguntas-frequentes — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# FAQ — Preguntas Frecuentes

Respuestas en una o dos frases, siempre con enlace a la fuente. Para **aprender**, mira
[`learn/`](/docs/learn); para **corregir un error**, [`troubleshooting/`](/docs/troubleshooting).

## General
**¿Qué es CrossFly?** Un framework de UI en **Java sobre libGDX/OpenGL** — dibuja todo vía GPU, sin
widgets nativos, así que la apariencia es idéntica en cualquier plataforma. (Cap. 1)

**¿Necesito saber libGDX?** No para el día a día — trabajas con `Window`/`Component`.
(Cap. 4)

## Bootstrap y ciclo de vida
**¿Cómo inicia la app?** El `Main` instancia la `MainWindow` **por reflexión** (vía *classname*).
(Cap. 4)

**Mi `MainWindow` no carga.** Debe **extender `Window`** y tener **constructor público
sin argumentos**. ([Anatomía de proyecto](/docs/get-started/project-structure))

**¿Dónde monto la UI?** En **`onShow()`** (con `super.onShow()`), nunca en el constructor.
(Cap. 7)

## Threading y renderizado
**¿Puedo tocar la UI desde otro hilo?** **No** — vuelve con `Component.onUI(r)` /
`Main.runOnPaintThread(r)`. ([El paint thread](/docs/concepts/the-paint-thread))

**Cambié algo y la pantalla no se actualiza.** El render es **bajo demanda**: llama a `Component.repaint()` (y
`setValidLayout(false)` si cambió el tamaño/posición). (Cap. 4 §4.6)

**¿Operación larga sin bloquear?** Ejecútala en un `Thread` y vuelve con `onUI`.
([Trabajo en segundo plano](/docs/data-and-services/background-work))

## Layout
**¿Qué significan los números del `add()`?** `LAY_FILL = -1f` rellena el sobrante; `LAY_AUTO = 0f` = tamaño
del contenido; `>0` = **fracción del contenedor** (no píxeles). (Cap. 12)

**¿Padding y margen?** `ingap` (interno) y `outgap` (externo), en el estilo.
([Estilizar componentes](/docs/ui/theming/styling-components))

**¿UI responsiva?** Usa `Relative` + `LAY_FILL`/`LAY_AUTO`, nunca píxeles.
([Responsividad](/docs/best-practices/responsividade))

**¿`GridLayout`?** Pasa **todos los anchos, luego todos los componentes**: `add(w0,w1,…,c0,c1,…)`.
([GridLayout](/docs/ui/layouts/grid-layout))

## Navegación
**¿Cómo navego entre pantallas?** `novaWindow.show()` = push, `hide()` = pop (es una **pila de `Window`**).
([Navegación](/docs/ui/navigation/navigate-between-screens))

**¿Pasar datos a otra pantalla?** Por el **constructor** de la `Window` de destino — no hay rutas nombradas.

**¿Recibir un resultado?** `picker.show(onAnswer)` para pickers; las pantallas comunes usan callback por el
constructor; `Alert` responde por `buttonAction`. ([Retornar valores](/docs/ui/navigation/returning-results))

## Estilo, tema y colores
**¿Cambiar claro/oscuro?** `Styles.setDarkMode(true/false)` / `toggleDarkMode()` — re-viste todo solo.
([Modo claro/oscuro](/docs/ui/theming/dark-mode))

**¿Cambiar la "cara" Material/iOS?** `Skin.set(new MaterialSkin()|new IOSSkin()|new FlutterSkin())`.
([Skins](/docs/ui/theming/skins))

**¿Definir los colores?** Genera un `ColorScheme` a partir de un color-semilla.
([Esquemas de colores](/docs/ui/theming/color-schemes))

**Mi color quedó invisible.** Es un `int` ARGB `0xAARRGGBB` — sin `FF` en el alpha desaparece. Usa `0xFF…`.
(Cap. 11)

## Datos y persistencia
**¿Guardar preferencias simples?** **Ya no hay prefs integradas** (`Settings.appSettings` fue removido) —
usa SQLite o archivos en `Device.homeFolder`. ([Archivos y preferencias](/docs/data-and-services/files-and-preferences))

**¿Usar base de datos?** `dev.crossfly.sqlite` (`SqliteDb`/`SqliteStmt`/`SqliteCursor`), con cifrado SQLite3MC, fuera
del paint thread. ([Persistencia con SQLite](/docs/data-and-services/storage-sqlite))

**¿Hay cliente HTTP/sync listo?** **No** — usa `java.net`/OkHttp; JSON con Jackson.
([Red y HTTP](/docs/data-and-services/networking-http))

**¿i18n de textos?** El framework **no** traduce — solo formatea fechas/números por locale (`LocaleFormats`);
la traducción es tuya. ([Internacionalización](/docs/best-practices/internacionalizacao))

**¿Lista grande lenta?** Usa `VirtualListView`/`PagedDataAdapter`.
([Rendimiento y listas grandes](/docs/best-practices/performance-e-listas-grandes))

## Plataformas y dispositivo
**¿En qué plataformas corre?** Android, iOS, Desktop (Windows/macOS/Linux vía LWJGL3) y Web (TeaVM).
([Matriz de plataformas](/docs/platforms/overview))

**¿Cámara/GPS/Bluetooth/biometría?** Paquete `dev.crossfly.device`; Bluetooth es **BLE/GATT asíncrono**.
(Cap. 24)

**¿Impresora térmica?** **Soporte removido** — habla directo vía BLE/GATT.
([Bluetooth BLE](/docs/data-and-services/device-bluetooth-ble))

**¿La UI se traba en un dispositivo antiguo?** Verifica `Screen.slowGPU` y reduce sombras/gradientes/glass.
(Cap. 8)

**¿Probar la UI automáticamente?** Framework `dev.crossfly.test` (`TestCase` + comparación de screenshot).
([Pruebas](/docs/best-practices/testes))

**¿El Javadoc contradice el comportamiento?** Confía en el **código y en esta doc**.
([Cómo está organizada la referencia](/docs/reference/overview))

## Véase también
- Fuente canónica: Capítulo 34 — FAQ · [`troubleshooting/`](/docs/troubleshooting) · [`reference/`](/docs/reference)
