Cómo utilizar fragmentos de programar su aplicación para android

La interfaz de usuario en el ejemplo de aplicación de Android utilizada aquí tiene tres paneles - una lista de elementos, un panel detalle describiendo el que sea elemento se selecciona en la lista, y un panel de detalles-in-más-profundidad. En una pequeña pantalla del teléfono inteligente, cada panel puede ser una actividad separada. Sin embargo, una pantalla de la tablet en modo horizontal tiene espacio para más de un panel.

La imagen de abajo muestra esta aplicación con dos de los tres paneles. El panel de la izquierda muestra una lista de los componentes del SDK de Android. El panel de la derecha muestra una descripción de cualquier componente se elige en la lista de la izquierda. (La descripción es en realidad las primeras frases de la documentación del SDK del componente.) Este patrón de datos-a-la-derecha es parte de muchas interfaces de usuario.

Dos fragmentos unidos a una actividad.

Video: Tutorial android 1:primer programa hola mundo para android

Dos fragmentos unidos a una actividad.

Para crear la pantalla, se genera una actividad. La actividad tiene dos fragmentos - un fragmento de la izquierda y otro a la derecha. El panel izquierdo muestra el mismo fragmento a través del funcionamiento de la aplicación, por lo que puede declarar que el fragmento en el archivo de diseño de la actividad. El panel derecho muestra un fragmento en un momento, pero los cambios de fragmentos durante la ejecución de la aplicación. Así se declara una disposición de marcos en el panel derecho.

lt;? xml version = “1.0” encoding = “UTF-8” gt?;

En el código anterior, la Android: layout_ lo atributos divide la pantalla en dos mitades - un medio para el elemento de fragmento y la otra mitad para la FrameLayout elemento. La estrategia de estos atributos es comenzar mediante la asignación de un mínimo de cero píxeles para cada elemento. Por supuesto, cero píxeles significa que no hay anchura en todo (que es lo mismo que ser invisible). Para mantener las dos mitades de la disposición de ser invisible, asignar igual distinto de cero layout_weight valores a las dos mitades. Con valores de peso no es cero, cada medio se expande para llenar el espacio disponible en la disposición.

El uso del nombre de clase completo del fragmento (com.allmycode.frag.ComponentNamesFragment) Es intencional. Un nombre abreviado (tales como .ComponentNamesFragment) No va a cortar la mostaza.

En caso de que se esté preguntando, incorporado en Android detailsElementBackground proporciona un aspecto uniforme para cosas como la mitad derecha (cosas que muestran detalles de un elemento que el usuario ha seleccionado).

código de actividad principal de la aplicación es impresionante sin interés.

com.allmycode.frag paquete de importación-android.app.Activity-importación-android.os.Bundle pública AllPurposeActivity clase extiende Actividad {@Overrideprotected vacío onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState) -setContentView (R.layout.main ) -}}

El código siguiente contiene la ComponentNamesFragment clase. En virtud de la disposición en el primer ejemplo, plantas Android una ComponentNamesFragment en el lado izquierdo de la pantalla del dispositivo.

Video: AIDE - IDE para Programar y Compilar en Android - Java, C++

com.allmycode.frag paquete de importación-android.app.FragmentManager-importación e importación android.app.FragmentTransaction android.app.ListFragment-importación e importación android.os.Bundle android.view.View-importación e importación android.widget.ArrayAdapter ComponentNamesFragment clase android.widget.ListView-pública se extiende ListFragment {String static final [] = {COMPONENTES “Actividad”, “servicio”, “BroadcastReceiver”, “ContentProvider”} - @ Overridepublic vacío onActivityCreated (Bundle savedInstanceState) {super.onActivityCreated ( savedInstanceState) -setListAdapter (nuevo ArrayAdapterlt; gt; (getActivity (), android.R.layout.simple_list_item_1, COMPONENTS)) -} @ Overridepublic void onListItemClick (ListView l, Vista v, índice de int, long id) {// Crear fragmento con indexDocsFragment docsFragment = new DocsFragment () - args Bundle = Helper.getBundleWithIndex (índice) -docsFragment.setArguments (args) - // Borrar la parte posterior stackFragmentManager fragmentManager = getFragmentManager () - int backStackEntryCount = fragmentManager.getBackStackEnt ryCount () - for (int i = 0- i lt; backStackEntryCount- i ++) {fragmentManager.popBackStackImmediate () -} // Realizar la transactionFragmentTransaction fragmentTransaction = fragmentManager.beginTransaction () - -fragmentTransaction.commit fragmentTransaction.replace (R.id.docs, docsFragment) -fragmentTransaction.addToBackStack (null) () -}}

La clase en el código anterior se extiende de Android ListFragment clase. UN ListFragment es un fragmento que muestra una lista. Al principio de ciclo de vida del fragmento, el código en el ejemplo anterior establece un adaptador lista (más específicamente, una ArrayAdapter) Para el fragmento. Entonces, ¿cómo temprana es “desde el principio”?

los ArrayAdapter primer parámetro del constructor es un contexto. ¡Pero espera! A diferencia de una actividad, un fragmento no es un contexto. Por lo tanto no se puede utilizar la palabra clave this para el ArrayAdapter primer parámetro del constructor.

Afortunadamente, un fragmento tiene una getActivity método. Una llamada a getActivity agarra la actividad a la que se une el fragmento. Por lo tanto, para el ArrayAdapter primer parámetro del constructor, puede llamar getActivity. Por supuesto, no se puede llamar getActivity hasta que el fragmento se une a una actividad existente. Es por eso que el fragmento de onActivityCreated método se anula anteriormente. llamadas Android onActivityCreated después de unir el fragmento y llamar a la actividad de onCreate método. Así que todo funciona según lo previsto.

los android.app.Activity clase bisabuelo de clase es android.content.Context. Pero el android.app.Fragment clase padre de la clase es el viejo y simple java.lang.Object. Por lo tanto, en el código de una actividad, la palabra clave this hace referencia a un contexto. Pero en el código de un fragmento, la palabra clave esto no se refiere a un contexto.

En el ejemplo anterior, el constructor de la ArrayAdapter tiene tres parámetros.

El primer parámetro es el contexto - que el parámetro desagradable que le obliga a poner el constructor en el interior del onActivityCreated método.

El segundo parámetro es simple_list_item_1 - un diseño estándar de Android.

los simple_list_item_ 1 diseño crea la apariencia que se ve en la parte izquierda de la imagen. Android tiene un montón de estos diseños estándar. Para un resumen de los diseños disponibles, visite sitio para desarrolladores de Android.

El tercer parámetro es el conjunto de elementos que aparecerán en la lista.

En este ejemplo, los artículos vienen de la COMPONENTES array, que se declara en el mismo ejemplo.

Como un ListActivity, un ListFragment tiene una onListItemClick método. Puede responder a un clic al trabajar con una DocsFragment, un FragmentTransaction, y una FragmentManager:

Video: Aplicaciones para aprender a programar desde tu smartphone Android

los DocsFragment representa el lado derecho de la imagen de arriba.

Una transacción fragmento es un montón de cosas que hacer con los fragmentos. Por ejemplo, la creación de reemplazar un fragmento con otra es una transacción.

Video: Android studio 44 | Comunicacion entre fragments

Un gerente fragmento hace lo que su nombre indica. Gestiona las llegadas y salidas fragmentos.

Artículos Relacionados