¿Qué diferencia hay entre getSupportFragmentManager () y getChildFragmentManager ()?

Mi clase hereda Fragment y por eso no puede usar getSupportFragmentManager (). Estoy usando getChildFragmentManager y me está mostrando Error – IllegalArguementException: No se encontró ninguna vista para id … error.

Cualquier orientación sería apreciada.

El código para llamar AttachmentsListFragment es

Bundle b = new Bundle(); b.putSerializable("AttachmentsList", msg.attachments); AttachmentListFragment listfrag = new AttachmentListFragment(msg.attachments); FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.add(R.id.attachmentslistcontainer, listfrag); transaction.addToBackStack(null); transaction.commit(); 

Attachmentslayout.xml es

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/attachmentslistcontainer" android:orientation="vertical" > <TextView android:id="@+id/textViewAttachmentHeader" style="@style/Normal.Header.Toolbar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/list_separator_background" android:ellipsize="end" android:gravity="center" android:maxLines="2" android:text="@string/attachments_header" android:textColor="#FFFFFFFF" android:textSize="22sp" android:textStyle="bold" android:visibility="visible" /> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" > </ListView> </FrameLayout> 

AttachmentsListFragment.java

 public class AttachmentListFragment extends ListFragment implements IAttachmentsData { ArrayList<Attachments> items = null; Integer cellLayoutID; Integer index; public AttachmentListFragment() { } public AttachmentListFragment(ArrayList<Attachments> items) { this.items = items; Log.i("Logging", "Items size" + items.size()); //$NON-NLS-1$ } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bundle bundle; if (savedInstanceState != null) { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub //super.onCreateView(inflater, container, savedInstanceState); // setContentView(R.layout.attachmentslayout); View view = inflater.inflate(R.layout.attachmentslayout, container, false); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setListAdapter(new AttachmentAdapter( getActivity().getApplicationContext(), R.layout.attachmentslistcellcontent, items)); } @Override public void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub super.onListItemClick(l, v, position, id); index = position; Intent intent = new Intent(); Bundle b = new Bundle(); b.putByteArray("Data", items.get(position).getImageData()); intent.putExtras(b); } public byte[] getData() { // TODO Auto-generated method stub if (items != null && index < items.size()) { return items.get(index).getImageData(); } return null; } } 

La definición de getChildFragmentManager() es:

Devuelve un FragmentManager privado para colocar y administrar Fragmentos dentro de este Fragmento.

Mientras tanto, la definición de getFragmentManager() (o en este caso getSupportFragmentManager() ) es:

Devuelve el FragmentManager para interactuar con fragmentos asociados con la actividad de este fragmento.

Básicamente, la diferencia es que Fragment ahora tiene su propio FragmentManager interno que puede manejar fragmentos. El FragmentManager hijo es el que maneja Fragmentos contenidos sólo en el fragmento al que se agregó. El otro FragmentManager está contenido dentro de toda la Activity .

En este caso, lo que estoy adivinando es que ha agregado los fragmentos al FragmentManager de la actividad. Usted obtiene el FragmentManager niño que no contiene lo que está buscando. Así obtendrá la excepción porque no puede encontrar el fragmento con el ID dado porque está en un FragmentManager diferente.

  • Ocultar / mostrar la barra de acción contextual mediante programación
  • El color de fondo de la lista se vuelve blanco al desplazarse cuando se utiliza android.support.v4.app.ListFragment;
  • Rellenar lista de vista personalizada mediante ListFragment
  • ListFragment no vuelve a mostrar datos al llamar desde FragmentStatePagerAdapter
  • ListFragment con adaptador personalizado
  • Pie de página fijo y siempre visible debajo de ListFragment
  • Fragmento onCreate llamado varias veces cuando vuelve a cargar el Fragmento
  • ListFragment falta el divisor
  • El primer elemento de un ListView no funciona correctamente en Android
  • Android ListFragment: cómo tener tanto onListItemClick y onContextItemSelected?
  • NotifyDataSetChanged en el adaptador Curser no funciona con listfragment
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.