No se encontró ninguna vista para id – DialogFragment + Fragment

Tengo un DialogFragment con un diseño simple. Quiero agregar un fragmento (y en el futuro reemplazar este fragmento por otro) a un FrameLayout que esté dentro del diseño de DialogFragment. Sin embargo, el método de agregar el nuevo fragmento falla con el error:

"Ninguna vista encontrada para id 0x7f0b004f com.kennel39.diabeteslive_adtdev: id / frameAlertsContainer) para el fragmento Fragment_AlertsManage {41e7cb68}"

He comprobado mi xml, intentado diferentes métodos y he leído una serie de problemas similares en stackoverflow, pero no puedo encontrar una solución.

public class DialogManageAlerts extends DialogFragment{ static int patient_id; public static DialogManageAlerts newInstance(int given_patient_id){ DialogManageAlerts frag = new DialogManageAlerts(); patient_id = given_patient_id; Bundle bund = new Bundle(); bund.putInt("Patient_id", patient_id); frag.setArguments(bund); return frag; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View mainView = inflater.inflate(R.layout.dialog_alerts_master, container, false); getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE); FragmentManager myFragmentManager = getFragmentManager(); FragmentTransaction myTransact = myFragmentManager.beginTransaction(); Fragment_AlertsManage manageAlertsFragment = new Fragment_AlertsManage(); myTransact.add(R.id.frameAlertsContainer, manageAlertsFragment); myTransact.commit(); return mainView; } 

layout.dialog_alerts_master:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="@color/white_regular" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="10dp" android:background="@drawable/lower_border_background_white"> <TextView android:id="@+id/tvManageAlertsTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/manage_alerts_title" android:textAppearance="?android:attr/textAppearanceLarge" android:gravity="center_horizontal" /> </LinearLayout> <FrameLayout android:id="@+id/frameAlertsContainer" android:layout_width="match_parent" android:layout_height="wrap_content" > </FrameLayout> </LinearLayout> 

Y la clase Fragment_AlertsManage:

 public class Fragment_AlertsManage extends Fragment implements OnClickListener { int patient_id; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View myView = inflater.inflate(R.layout.fragment_alerts_manage, container, false); //Get buttons Button btnAdd = (Button)myView.findViewById(R.id.btnAddAlert); btnAdd.setOnClickListener(this); Button btnBack = (Button)myView.findViewById(R.id.btnBack); btnBack.setOnClickListener(this); //FILL CONTENT populateContent(myView); return myView; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btnAddAlert: { //Switch fragment FragmentManager myFragmentManager = getFragmentManager(); FragmentTransaction myTransact = myFragmentManager.beginTransaction(); Fragment_AlertsAdd addAlertFragment = new Fragment_AlertsAdd(); myTransact.addToBackStack("Previous"); myTransact.replace(this.getView().getId(), addAlertFragment); myTransact.commit(); break; } case R.id.btnBack: { FragmentManager myFragmentManager = getFragmentManager(); FragmentTransaction myTransact = myFragmentManager.beginTransaction(); myTransact.remove(Fragment_AlertsManage.this); //Launch Home Intent homeIntent = new Intent(this.getActivity(), HomeActivity.class); homeIntent.putExtra("patient_id", patient_id); startActivity(homeIntent); getActivity().finish(); break; } } } public void populateContent(View myView){ try { ArrayList<Alert> alerts = new RetrieveAlerts(patient_id).execute().get(); ListView list = (ListView) myView.findViewById(R.id.reminder_listview); AlertsListAdapter alertsAdapter = new AlertsListAdapter(this.getActivity(), alerts); list.setAdapter(alertsAdapter); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

¿Por qué tengo este error y qué puedo hacer para solucionarlo?

El documento en getFragmentManager() :

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

R.id.frameAlertsContainer está en el diseño de DialogFragment, no en el diseño de la actividad, por lo que no puede encontrarlo. Intente usar getChildFragmentManager () en su lugar. Sin embargo no puedo decir si esto funcionará dentro del método onCreateView () ya que la vista no está asociada con el fragmento todavía. Es posible que deba ponerlo en onStart () o en otra cosa.

Tuve este problema, para resuelto, puedo getFragmentManager () en el método OnStart () y el trabajo perfecto.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.