Cómo saber si un fragmento ya se llama onCreateView ()
Todos sabemos que cuando se usa ViewPager
con Fragment
y FragmentPagerAdapter
tenemos 3 Fragment
cargados: el visible, y ambos en cada uno de sus lados.
Por lo tanto, si tengo 7 Fragments
y estoy iterando a través de ellos para ver qué 3 de ellos son los que se cargan, y por lo que me refiero onCreateView()
ya ha sido llamado, ¿cómo puedo determinar esto?
- Cambiar entre fragmentos en una sola actividad
- Cómo administrar divisores en un PreferenceFragment?
- Problema al eliminar la biblioteca supportV4
- Fragmento no se actualizará después de la notificación de apertura
- Reemplazar un fragmento con otro en ViewPager
EDIT: El Fragment
no tiene que ser el que está mostrando ViewPager
, sólo que onCreateView()
ya ha sido llamado.
- Pestañas en la parte superior e inferior de la pantalla
- CustomAnimation al llamar a popBackStack en un FragmentManager
- Menú de opciones de Android en fragmento
- Fragmentos método onClick en el elemento fragmento
- Conversación ApplozicActivity to Fragment
- OnPrepareOptionsMenu en Fragmento no se llama como de AppCompat v22 (API 10)
- Fragmento de Android que se comporta raro
- Navegación Android desde el menú deslizante - fragmentos o actividades?
Bueno, lógicamente, esto sería una prueba razonable si se ha llamado onCreateView:
myFragment.getView() != null;
Suponiendo que tiene una referencia a todos los fragmentos en el buscapersonas iterar, ellos y comprobar si tienen una vista.
http://developer.android.com/reference/android/app/Fragment.html#getView ()
Actualizar
La respuesta anterior supone que sus fragmentos siempre crean una vista y no son fragmentos sin vista. Si son entonces sugiero que subgrupo el fragmento así:
public abstract class SubFragment extends Fragment { protected boolean onCreateViewCalled = false; public boolean hasOnCreateViewBeenCalled() { return onCreateView; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup Container, Bundle state){ onCreateViewCalled = true; return null; } }
Sólo tenga en cuenta que otras subclases tendrán que llamar a super o establecer la bandera si deberían anular onCreateView también.
He añadido una interfaz a Fragment. Parece:
protected OnCreateViewCallback createViewCallback = null; public void setCreateViewCallback(OnCreateViewCallback createViewCallback) { this.createViewCallback = createViewCallback; } public interface OnCreateViewCallback { void onCreateView(); }
En mi onCreateView ():
//initialize your view. if (createViewCallback != null) { createViewCallback.onCreateView(); createViewCallback = null; } return mainView;
De mi actividad:
if (ocrFragment.getView() == null) { ocrFragment.setCreateViewCallback(new MainScreenFragment.OnCreateViewCallback() { @Override public void onCreateView() { ocrFragment.ocrImage(picture, false); } }); } else { ocrFragment.ocrImage(picture, false); }
También puede comprobar Fragment.isVisible()
porque un fragmento está en estado visible cuando se encuentra en el límite de página fuera de pantalla de un ViewPager.
Edit: Pero realmente depende de lo que realmente quieres lograr con tu pregunta. Tal vez algún tipo de actualización a todas las interfaces de usuario en sus fragmentos cuando su interfaz de usuario está listo?
EDITAR:
Sólo otra adición, usted podría escuchar onViewCreated()
y establecer un indicador. O notifique su Actividad y haga más trabajo ( getActivity()
devolverá su Actividad en este momento). Pero realmente, mejor estado lo que desea lograr con su pregunta.
- Bloquear todo para cerrar una aplicación de Android
- ¿Cómo obtener la fuente de datos para el recuento de pasos con la API de Google Fit para Android?