Comunicación entre las pestañas de SlidingTabLayout

He buscado mucho en cómo comunicarse entre fragmentos usando SlidingTabLayout pero realmente no tengo una buena respuesta. Sé que usando ActionBar pero quería la nueva forma que es para Android Lollipop con SlidingTabLayout. Lo intenté-> http://android-er.blogspot.in/2012/06/communication-between-fragments-in.html pero quería diseño material. Me referí a este enlace http://www.android4devs.com/2015/01/how-to-make-material-design-sliding-tabs.html para la fabricación de diseño de material deslizamiento de pestañas. Ahora quería saber cómo comunicarse entre las pestañas deslizantes . He intentado mucho pero no pude encontrar la respuesta que buscaba. Cualquier ayuda realmente apreciada.

La manera más limpia es definir una interfaz que implementará la Activity que contiene el Fragment . Así es como lo solucioné recientemente:

Primero defina la interfaz en su propio archivo, porque tiene que ser visible para otras clases.

 public Interface FragmentCommunication { public void printMessage(String message); .... } 

En su Activity necesita implementar esta interfaz

 public class MainActivity extends ActionBarActivity implements FragmentCommunication { .... public void printMessage(String message) { System.out.println(message); } } 

Finalmente, en su Fragment , puede obtener la Activity alojamiento con getActivity() y utilizar los métodos de comunicación para getActivity() la actividad a la interfaz de comunicación implementada de la siguiente manera:

 ((FragmentCommunication) getActivity()).printMessage("Hello from Fragment!"); 

EDIT : Para pasar el mensaje a otro Fragment s hacer esto: ya que todas las pestañas se extienden Fragment es lo mejor para crear otra interfaz

 public Interface ReceiverInterface { public void receiveMessage(String str); } 

Luego implementa esto en tus pestañas

 public class Tab1 extends Fragment implements ReceiverInterface { .... code ..... public void receiveString(String str) { //use str } } 

Para enviar este mensaje a otros fragmentos es necesario que la actividad los vea. Por ejemplo, ahora modifique el printMessage() que la Activity implementa en este

  public void printMessage(String message) { System.out.println(message); //Send the message that came from one fragment to another if (tabFragment1 instanceof ReceiverInterface){ ((ReceiverInterface) tabFragment1).receiveMessage(message); } } 

Al deslizar pestañas ( ViewPager ), puede trabajar con el mismo Fragment o utilizar Fragments diferentes.

Como mencionaste anteriormente, probaste esto , así que voy con diferentes Fragments .

Lo que vas a hacer es básicamente utilizar EventBus : https://github.com/greenrobot/EventBus .

Añádelo a las dependencias de build.gradle ubicadas dentro de la carpeta de la app .

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.1' compile 'de.greenrobot:eventbus:2.4.0' } 

También se puede lograr mediante Intents .

1 – Crear una clase para representar el evento cuando cambia el texto:

 public class TextChangedEvent { public String newText; public TextChangedEvent(String newText) { this.newText = newText; } } 

2 – Fragmento A:

 //when text changes EventBus bus = EventBus.getDefault(); bus.post(new TextChangedEvent(newText)); 

3 – Fragmento B:

 EventBus bus = EventBus.getDefault(); //Register to EventBus @Override public void onCreate(SavedInstanceState savedState) { bus.register(this); } //catch Event from fragment A public void onEvent(TextChangedEvent event) { yourTextView.setText(event.newText); } 

Fuente: https://stackoverflow.com/a/20475430/1549700

Utilice la biblioteca GitHub de EventBus. Esto es actualmente la manera más simple y más conveniente. https://github.com/greenrobot/EventBus

  • Android TabLayout con pestaña activa siempre en el centro, al igual que en la aplicación Play Kiosco
  • CollapsingToolbarLayout no funciona (colapsando) cuando se desplaza
  • Cajón de navegación de derecha a izquierda con v7 ActionBarDrawerToggle
  • Progreso circular con un botón de acción flotante
  • Hoja inferior de Android Modal (Diálogo) no se abre completamente
  • Cómo agregar Android Support v7 bibliotecas en eclipse?
  • Android L - Botón de acción flotante (FAB)
  • ¿Cómo utilizar ItemAnimator en un RecyclerView?
  • Cómo implementar Material Design "Full-width text field"?
  • Etiqueta flotante Spinner?
  • No se muestra la elevación de Android de View en CardView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.