¿Cómo puedo obtener Fragment from View?

He añadido un Fragment en un TableLayout y quiero administrarlos desde mi Activity contenedores, así que usé esto:

 Fragment fragment = (Fragment) tableLayout.getChildAt(i); 

Pero getChildAt(int) devuelve una View y una View no puede convertir en Fragment

No sé por qué la gente está votando en contra de su pregunta. Fragments pueden ser muy confusos a veces, especialmente para principiantes. Para entender su problema, usted debe aprender lo que es un Fragment y se utilizan.

Para empezar, una View es algo que tiene existencia en la pantalla. Los ejemplos incluyen: TextView , EditText , Button , etc. Se colocan dentro de XML "layouts". Estos diseños se muestran usando una Activity .

Ahora, un Fragment no es una View . No tiene ninguna existencia en la pantalla en absoluto. En su lugar, es una clase que simplemente gestiona un "diseño" – algo parecido a una Activity . Si necesita la Vista devuelta por su fragmento onCreateView() , puede usar findViewById() directamente dentro de su Activity .

Si necesita una referencia a su Fragmento, hay dos formas posibles de hacerlo:

1) Si agregó el fragmento de forma programática como este

 getFragmentManager() .beginTransaction() .replace(R.id.fragmentContainer, myFragment, myFragmentTAG) .commit(); 

Puedes usar:

 MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag(myFragmentTAG); 

2) Si agregó el Fragmento dentro de un diseño XML como este:

 <fragment android:name="com.example.android.fragments.HeadlinesFragment" android:id="@+id/fragmentContainer" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> 

Puede utilizar esto:

 getFragmentManager().findFragmentById(R.id.fragmentContainer); 

Básicamente, cada actividad tiene una clase FragmentManager que mantiene todos los Fragments activos y hay dos maneras de encontrarlos: Uso de un TAG único que se pasa mientras se muestra un fragmento o se pasa el contenedor view-ID donde se agregó el fragmento.

No se puede obtener un fragmento como este. Usted tendrá que agregar el fragmento con una etiqueta y recuperarla por esa etiqueta.

Para agregar un fragmento haga lo siguiente:

 getFragmentManager().beginTransaction().add(R.id.container, fragment, "tagTofindFragment"); 

Para obtener fragmento:

 fragment = getFragmentManager().findFragmentByTag("tagTofindFragment"); 

Aquí tagTofindFragment es esa etiqueta que debe ser única entre tus fragmentos.

  • CoordinatorLayout con barra de herramientas y fragmento
  • ¿Es la mejor práctica para la navegación con pestañas?
  • Obtener fragmento actual y guardar en onSaveInstanceState () Método para la orientación de pantalla
  • No se puede extraer del fragmento
  • Ampliar MapFragment Android
  • Navegación Cajón de contenedores múltiples y mejores prácticas
  • ¿Cómo funciona Android Handle Fragment livecycle en un ViewPager?
  • Fragmento de transacción no funciona cuando se utiliza AppCompatActivity o FragmentActivity
  • Añadir acción de botón en la notificación personalizada
  • Animación de Cube Flip para Fragments en Android
  • Android Fragment desaparece después de renderizar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.