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
.
- Android: ¿cómo puedo acceder a las vistas (utilizando findViewById) de una actividad de un fragmento onCreateView ()?
- Refreshing ArrayAdapter onResume
- Seleccione el primer elemento en ListView con Cursor Loader
- El fragmento de niño está destruyendo automáticamente
- La mejor práctica para manejar el cambio de orientación: Android
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?
- La función de arrastrar / soltar en el estudio de Android no funciona
- TabHost muestra contenido una vez (onCreate)
- ¿Cómo funciona `onViewStateRestored` de Fragments?
- ¿Cómo usar Parcelable en fragmento para obtener datos?
- Agregar un fragmento con el método add () no oculta fragmentos anteriores
- La tecla de retroceso para hacer estallar el fragmento muestra los fragmentos superpuestos
- No se puede reemplazar onCreateOptionsMenu en ListFragment
- IllegalStateException en FragmentManager
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()); }
- Cómo restringir los caracteres especiales de un campo Android EditText?
- NotifyDataSetChange no funciona en RecyclerView