Obtener el ID de la vista de contenedor de fragmento
Tengo un fragmento agregado usando
transaction.add(R.id.content, fragment, null);
Y necesito comenzar un nuevo fragmento de éste. Pero para hacer esto necesito saber el primer fragmento de la identificación de la opinión del envase (R.id.content en mi caso). ¿Cómo puedo obtener esto?
- Android- cómo programar una vista entre las vistas en el diseño pre-cargado desde el XML?
- Refrescar una vista dentro de un fragmento
- Cómo enviar datos de la Actividad al Fragmento
- ¿Cómo puedo implementar la vista de cabecera + deslizar la pestaña del buscapersonas + ver paginador como la aplicación de lujo?
- Android ActionBar no visible
Puedo usar este id directamente, pero supongo que fragmento no debe saber este tipo de detalles sobre la actividad de los padres. Por ejemplo, será imposible utilizar este fragmento en otra actividad en este caso.
Puede ser "partida" fragmento de otro es una mala práctica y todos los fragmentos manipulación lógica debe ser manejado por la propia actividad? Pero la creación de secuencias agradables de fragmentos empezando unos a otros parece bastante útil (por ejemplo, detallView-> moreDetailView-> evenMoreDetailView).
- Vista de calendario para Android GingerBread y antes (API <11)
- Vista no adjunta al administrador de ventanas (cuál es la solución?)
- Android: Añadir fragmentos con android.R.id.content
- ¿Es posible usar comandos adb para hacer clic en una vista encontrando su ID?
- OnGlobalLayout diferenciar entre varias invocaciones
- Android Canvas OpenGL Renderer está sin memoria
- ¿Es la mejor práctica para crear un botón como este en una aplicación de Android?
- Qué hace que el método OnDraw de View se llame y cuando
Puede acceder al identificador del contenedor llamando al
((ViewGroup)getView().getParent()).getId();
Dunno si entiendo exactamente su pregunta, pero usted consigue el contenedor en onCreateView. Supongo que podrías guardarla en una variable local.
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mContainer = container; ... }
Creo que hay una forma más estándar de acceder a la vista en lugar de utilizar
((ViewGroup) getView().getParent()).getId()
Asumiré que estás trabajando con una MainActivity que presenta un fragmento de lista, que puede presentar otro fragmento de lista al hacer clic en un elemento, y así sucesivamente. Supongo que ha elegido reemplazar la vista principal de MainActivity con el contenido de los fragmentos de lista que presenta.
Debido a que cada fragmento de lista se encuentra alojado en MainActivity, siempre puede acceder a la vista de MainActivity.
// Inside of onListItemClick... FragmentManager fm = getFragmentManager(); Fragment fragment = new MyOtherListFragment(); FrameLayout contentView = (FrameLayout) getActivity().findViewById(R.id.content_view); fm.beginTransaction() .replace(contentView.getId(), fragment) .addToBackStack(null) .commit();
El ejemplo anterior supone que tiene un recurso de diseño XML que establece en MainActivity, llame al recurso XML R.layout.activity_main, donde hay un FrameLayout con el ID R.id.content_view. Este es el enfoque que tomé. El ejemplo que presento aquí es una versión más sencilla de la que escribí en mi aplicación.
Por cierto, mi versión de IntelliJ (versión 1.0.1) me advierte que
((ViewGroup) getView().getParent)
Puede lanzar una excepción NullPointerException.
Suponiendo que tiene Fragment instancia mCurrentFragment
en la clase de actividad. Puedes obtener el contenedor de Fragment View via
int id = mCurrentFragment.getView().getParent().getId(); ViewGroup vg = (ViewGroup) findViewById(id); // Fragment's container View
- @Named proveedores con los mismos tipos de retorno terminan dando java.lang.IllegalArgumentException: Duplicar
- Práctica recomendada para mantener los datos en la memoria y la base de datos al mismo tiempo en Android