Acceda a la vista de fragmentos desde la actividad enCreate
Estoy en el proceso de hacer mi primera aplicación para Android, y tengo unFragment
que se agrega a miActivity
en elActivity
esonCreate()
método. El problema al que me enfrento es que no puedo encontrar ninguna de las vistas contenidas en elFragment
desde elActivity
esonCreate()
método.
Otros hilos han sugerido que esto se debe a queFragment
aún no ha sido inflado, por lo quefindViewById()
devolverá nulo para cualquier vista contenida dentro delFragment
.
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 onCrear el final de la actividad onCreate fragmento onCreateView
Debido a este orden, cualquier intento de acceder a las vistas de laFragment
en elActivity
esonCreate()
método (usandofindViewById()
) produce unNullPointerException
, como elFragment
esonCreateView()
Sólo se llama DESPUÉS del final de laActivity
esonCreate()
.
Utilizando laFragmentManger
esexecutePendingTransactions()
después de agregar elFragment
no ayuda
Básicamente, me he visto obligado a poner el código de problema en elActivity
esonStart()
método en lugar deonCreate()
, comoonStart()
sucede DESPUÉS de laFragment
esonCreateView()
.
¿Alguien sabe cuál es la práctica estándar aquí, o cómo puedo hacer que mi código de acceso a Fragment-View funcione en elActivity
esonCreate()
¿método?