¿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; } } 

One Solution collect form web for “¿Qué diferencia hay entre getSupportFragmentManager () y getChildFragmentManager ()?”

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.

  • El adaptador personalizado getview no se llama
  • Reemplazar ListFragment con fragmento dentro de ViewPager con pestañas
  • Android actualiza una lista de fragmentos de su actividad principal
  • Cambiar la fuente del fragmento de lista en el fragmento de detalle
  • Onclicklistner no funciona en el listview de fragmentos
  • ¿Cómo añado iconos a la plantilla de gavetas de navegación de Android Studio?
  • Usando el paquete para pasar datos entre fragmento a otro fragmento ejemplo
  • Cómo ejecutar la acción después de pulsar el botón positivo de DialogFragment
  • Cómo establecer el divisor (a nulo) de un diseño personalizado ListFragment
  • MultiChoiceModeListener que causa problemas con SherlockListFragment
  • Duplicación de filas listview en el fragmento de lista en el cambio de orientación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.