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?

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).

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 
  • View.getContext devuelve null, ¿por qué?
  • Rotar la vista de anuncio con API 8
  • Deslizando un fragmento sobre otro en Android
  • Cómo crear un estilo de aplicación de Twitter Acciones rápidas en Android
  • Android View onSaveInstanceState no se llama
  • ¿Es posible llamar manualmente onCreateView en un fragmento?
  • ¿Qué son WindowInsets?
  • Cómo borrar el enfoque de todos los elementos seleccionables en una vista?
  • Después de girar una línea lineal, los eventos onclick no cambian de posición después de la rotación
  • Atributos XML personalizados sin vista personalizada en Fragmento
  • Descripción de las pérdidas de memoria en la aplicación de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.