Usos de etiquetas de fragmento

En Android, puede establecer una etiqueta para un Fragmento en una FragmentTransaction.

¿Por qué necesitaría establecer una etiqueta para un Fragmento?

¿Y es una buena práctica si un fragmento cambió su comportamiento basado en su etiqueta?

Puede usarse para evitar la recreación de un cambio de orientación Fragment en Activity .

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.photos_image_pager); MyFragment fragment; if (savedInstanceState != null) { fragment = (MyFragment) getFragmentManager() .findFragmentByTag("my_fragment_tag"); } else { fragment = new MyFragment(); fragment.setArguments(getIntent().getExtras()); getFragmentManager() .beginTransaction() .add(android.R.id.content, fragment, "my_fragment_tag") .commit(); } } 

La Activity se vuelve a crear en el cambio de orientación y se onCreate(...) método onCreate(...) . Si el Fragment se creó antes de destruir la Activity y se agregó al FragmentManager con una etiqueta, ahora se puede recuperar del FragmentManager con la misma etiqueta.

Para una discusión más larga sobre cómo se puede usar, vea:

  • ViewPager y fragmentos – ¿cuál es la forma correcta de almacenar el estado del fragmento?

Para fragmentos que no son UI:

¿Por qué necesitaría establecer una etiqueta para un Fragmento?

A veces el Fragment puede ser utilizado como un trabajador de fondo por la Activity . Dicho fragmento no tiene UI, también se llama fragmento no-UI. La String tag es la única manera de identificar este fragmento. Para agregar este fragmento, se utiliza el método add(Fragment, String) que no toma View Id . Por ejemplo:

 FragmentManager fm = getFragmentManager(); workFragment.setTargetFragment(this, 0); fm.beginTransaction().add(workFragment, "work").commit(); 

Luego, para obtener la referencia a este fragmento,

 workFragment = (WorkFragment)fm.findFragmentByTag("work"); 

Ahora, utilizando la referencia workFragment , puede acceder a todos los métodos de este fragmento en la Activity o su fragmento de interfaz de usuario. Este es el ejemplo completo de un fragmento que no es de UI.


Para Fragmentos con UI:

¿Y es una buena práctica si un fragmento cambió su comportamiento basado en su etiqueta?

Hay situaciones en las que tenemos que cambiar el comportamiento del fragmento de Activity mediante etiquetas. Debería estar bien hacerlo, he visto algunas aplicaciones de código abierto que utilizan esta práctica. Básicamente, usted proporciona etiquetas de cadena a los fragmentos. Esto se utiliza para etiquetar un fragmento dentro del FragmentManager para que podamos buscarlo más tarde. Y cambiar o acceder a su comportamiento de la Activity .

Por ejemplo: Un usuario cambia a SettingsActivity de MainActivity , cambia la configuración, presiona el botón back para volver a MainActivity. Puede detectar el cambio de configuración en MainActivity # onResume () y actualizar o cambiar el comportamiento del fragmento actual de acuerdo con la nueva configuración.

 FragmentManager fm = getFragmentManager(); uiFragment = (UiFragment) fm.findFragmentByTag("ui"); uiFragment.fetchNewData(); uiFragment.displayNewData(); 
  • Portar una aplicación de 100 Actividades a Fragmentos sin morir
  • El atributo android: name en el fragmento <
  • ¿Cómo implementar un fragmento / panel deslizante verticalmente como Google Music en una aplicación de Android?
  • Cómo escribir una aplicación multi-panel de Android con navegación muy profunda
  • Mostrar el mapa de google como un círculo
  • Cómo llamar a fragmento de fragmento?
  • ¿Es necesario establecer los oyentes de la interfaz Fragment a null en detach?
  • Barra de herramientas de Android que no llama a onOptionsItemSelected de fragmentos en Backstack
  • ¿Por qué se llama onAttach antes de onCreate?
  • Fragmentos de Android que conservan datos
  • Nuevo tema incorrecto de la biblioteca de soporte de preferencias en tiempo de ejecución
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.