Enviar datos (ArrayList) de Actividad a Fragmento

Tengo sólo una Activity con un solo Fragment asociado. El Fragment forma parte del Navigation Drawer . Ahora tengo un ArrayList<String> que sigue cambiando. Lo quiero de tal manera que, cada vez que abro el Navigation Drawer , el ArrayList debe ser pasado al Fragment .

El Fragment tiene un ListView que se rellena con el ArrayList .

Esta es la Activity con el código de la Toolbar de Toolbar y el DrawerLayout :

 toolbar = (Toolbar) findViewById(R.id.app_bar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); OnlineNavDrawerFragment drawerFragment = (OnlineNavDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.fragmentUsers); drawerFragment.setUp((DrawerLayout) findViewById(R.id.drawer_layout), toolbar); 

Este es el código correspondiente del Fragment :

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_online_nav_drawer, container, false); ListView lvOnline = (ListView) view.findViewById(R.id.lvOnlineUsers); return view; } public void setUp(DrawerLayout drawerLayout, Toolbar toolbar) { mDrawerLayout = drawerLayout; mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) { @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); getActivity().invalidateOptionsMenu(); } @Override public void onDrawerClosed(View drawerView) { super.onDrawerClosed(drawerView); getActivity().invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); mDrawerLayout.post(new Runnable() { @Override public void run() { mDrawerToggle.syncState(); } }); } 

Estoy haciendo frente al problema siguiente: cómo pasar ArrayList<String> de la Activity al Fragment .

Además, no puedo ver en qué punto del código de Activity realmente puedo pasar los datos.

PS: La mayor parte del código es la versión modificada de uno mostrado en una serie de videos de YouTube. Y funciona en su forma actual.

En tu fragmento haz esto.

 GetDataInterface sGetDataInterface; public interface GetDataInterface { ArrayList<String> getDataList(); } @Override public void onAttach(Activity activity) { super.onAttach(activity); try { sGetDataInterface= (GetDataInterface) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + "must implement GetDataInterface Interface"); } @Override public void onResume() { super.onResume(); if(sGetDataInterface != null){ mData = sGetDataInterface.getDataList(); } } } 

En su actividad principal

 public class MainActivity implements YourFragmentName.GetDataInterface { @Override public ArrayList<String> getDataList() { return mDataArrayList; } } 

Utilice un EventBus (como https://github.com/greenrobot/EventBus ). Defina su propio evento como NavigationDataChangedEvent y registre su Fragmento para NavigationDataChangedEvent en Fragment.onViewCreated() y anule el registro (importante para evitar fugas de memoria) en Fragment.onDestroyView() . La actividad simplemente puede publicar un objeto NavigationDataChangedEvent siempre que los datos hayan cambiado para informar al fragmento. Mediante el uso de un EventBus su actividad y fragmento se desacoplan …

  • Cómo probar la actualización de la base de datos sqlite antes de cargar la nueva versión de mi aplicación en la tienda de juegos en android
  • Java.lang.IllegalArgumentException: El nombre de host no puede ser nulo, mientras dispara una solicitud de obtener
  • ¿Dónde almacenar las claves de preferencias de Android?
  • Android HttpURLConnection PUT a Amazon AWS S3 403 error
  • ¿Cómo hacer EditText que no se puede editar?
  • Una manera barata / rápida de hash Bitmaps?
  • Android cómo cambiar el tamaño (escala) de un icono de vector xml mediante programación
  • no puede pasar por referencia para una variable booleana en android
  • SearchView y título de la actividad en ActionBar
  • No detener el bucle con super.oncreate () y extender MainActivity
  • Cómo definir negrita en un selector de Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.