Acceso a la vista de fragmentos de la actividad onCreate

Estoy en el proceso de hacer mi primera aplicación para Android, y tengo un Fragment que se agrega a mi Activity en el método onCreate() . El problema al que me enfrento es que no puedo encontrar ninguna de las vistas contenidas dentro del Fragment del método onCreate() de la Activity .

Otros hilos han sugerido que esto se debe a que el Fragment aún no se ha inflado, por lo que findViewById() devolverá nulo para las vistas contenidas en el Fragment .

Esto es lo que quiero decir:

Actividad:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("activity onCreate"); setContentView(R.layout.activity_main); if (savedInstanceState != null) { return; } initialiseUI(); // Fragment added to Activity System.out.println("end of activity onCreate"); } 

Fragmento:

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { System.out.println("fragment onCreateView"); return inflater.inflate(R.layout.event_log, container, false); } 

Esto imprime los resultados:

Actividad onCreate final de actividad onCreate fragmento onCreateView

Debido a este orden, cualquier intento de acceder a las vistas del Fragment en el método onCreate() (usando findViewById() ) produce una NullPointerException , ya que la función onCreateView() del Fragment sólo se llama DESPUÉS del final de la Activity 'S onCreate() .

Usar el FragmentManger 's executePendingTransactions() después de agregar el Fragment no ayuda.

Básicamente, me he visto obligado a poner el código del problema en el método onStart() lugar de onCreate() , ya que onStart() sucede DESPUÉS del onCreateView() del Fragment .

¿Alguien lo que la práctica estándar aquí es, o cómo puedo hacer que mi Fragmento-View-acceso a código de trabajo dentro de la Activity de onCreate() método?

Actualiza tus vistas en onCreateView() .

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.event_log, container, false); TextView tv = (TextView) view.findViewById(R.id.text); tv.setText("hello world"); return view; } 

O si sus cambios dependen de la Activity la que está unido su Fragment , utilice onActivityCreated() .

 @Override public void onActivityCreated (Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); TextView tv = (TextView) getView().findViewById(R.id.text); tv.setText(getActivity.getSomeText()); } 
  • Recibe el resultado de DialogFragment
  • ¿Cómo conservar la instancia de fragmento de fragmento de reproducción de vídeo después de un cambio de orientación?
  • Fragmentos de Android ocultar show OnHide / OnShow?
  • Cambio de orientación Crash Application
  • AsycTask Lanzar IllegalStateException - Fragmento no conectado a la actividad
  • ¿Cómo puedo saber si 2 fragmentos tienen una instancia de la misma clase
  • Android: ¿Puedes anidar Fragmentos?
  • Uso apropiado de sub sub fragmentos con (Child) FragmentManager
  • Android: Añadir un fragmento a una actividad
  • Cajón de navegación con la actividad y el niño Fragmentos
  • Devolución de llamada a notifyDataSetChanged
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.