Estoy en el proceso de hacer mi primera aplicación para Android, y tengo un Fragment
que se agrega a mi Activity
en onCreate()
método de la Activity
's. El problema al que me enfrento es que no puedo encontrar ninguna de las vistas contenidas en el Fragment
del Activity
del método onCreate()
.acceso Fragmento Vista desde onCreate de Actividad
Otros hilos han sugerido que esto se debe a que Fragment
aún no se ha inflado, por lo que findViewById()
devolverá nulo para las vistas contenidas en 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 la actividad alcrear fragmento onCreateView
Debido a este fin, cualquier intento de acceder a los puntos de vista de la Fragment
en el Activity
'método s onCreate()
(usando findViewById()
) produce una NullPointerException
, como el Fragment
' s onCreateView()
sólo se obtiene la llamada después del final de las Activity
's onCreate()
.
Usar FragmentManger
's executePendingTransactions()
después de agregar Fragment
no ayuda.
Básicamente, me he visto obligado a poner el código de problema en el Activity
'onStart()
método en lugar de onCreate()
s, como sucede después de la onStart()
Fragment
' s onCreateView()
.
¿Alguien es la práctica habitual aquí, o cómo puedo hacer que mi código Fragment-View-accessing funcione dentro del método Activity
onCreate()
?
¿Por qué quiere acceder a la vista de 'Fragment' en onCreate método' 'Activity' de()? Algo está mal con tu diseño. – biegleux
Específicamente, después de agregar un Fragmento en el método onCreate() de la Actividad, deseo cambiar el texto de un TextView contenido dentro del Fragment y agregar algunos elementos a un Spinner. ¿Qué podría estar mal con mi diseño? – Dan
Luego actualiza el diseño de tu fragmento en el método 'onCreateView()' de 'Fragment'. Ver mi respuesta – biegleux