¿Cómo puedo pasar datos entre un fragmento y su actividad de contenedor? ¿Hay algo similar a pasar datos entre actividades a través de intentos?
Leí esto, pero no ayudó mucho:
http://developer.android.com/guide/topics/fundamentals/fragments.html#CommunicatingWithActivity
Respuestas:
En tu fragmento puedes llamar
getActivity()
.Esto le dará acceso a la actividad que creó el fragmento. Desde allí, obviamente, puede llamar a cualquier tipo de método de acceso que esté en la actividad.
por ejemplo, para un método llamado
getResult()
en su Actividad:fuente
Intenta usar interfaces.
Cualquier fragmento que debe pasar datos a su actividad que contiene debe declarar una interfaz para manejar y pasar los datos. Luego, asegúrese de que su actividad de contención implemente esas interfaces. Por ejemplo:
JAVA
En su fragmento, declare la interfaz ...
Luego, conecte la implementación de la clase que contiene la interfaz al fragmento en el método onAttach, de esta manera:
Dentro de su fragmento, cuando necesite manejar el paso de datos, simplemente instálelo en el objeto dataPasser:
Finalmente, en su actividad de contención que implementa
OnDataPass
...KOTLIN
Paso 1. Crear interfaz
Paso 2. Luego, conecta la implementación de la clase que contiene la interfaz al fragmento en el método onAttach (YourFragment), así:
Paso 3. Dentro de su fragmento, cuando necesite manejar el paso de datos, simplemente instálelo en el objeto dataPasser:
Paso 4. Finalmente, en tu actividad implementa OnDataPass
fuente
ActionBar.TabListener
y tuve que agregar una interfaz adicional.Enfoque más fácil pero no recomendado
Puede acceder a los datos de actividad desde el fragmento:
Actividad:
Fragmento:
fuente
MyActivity
fuente
Pasar datos entre un fragmento y su actividad de contenedor
Actividad:
Fragmento:
Leer el valor en el fragmento
fuente
No sé si esta es la mejor manera o no, Bu. He estado buscando en Google durante bastante tiempo para encontrar cómo puedo pasar un paquete de un fragmento a su actividad de contenedor, pero todo lo que encontré fue enviar datos de la actividad a un fragmento. (lo cual fue un poco confuso para mí ya que soy un novato).
luego probé algo propio que me funcionó exactamente como quería. así que lo publicaré aquí en caso de que alguien como yo busque lo mismo.
// Pasando datos desde Fragment.
// Obteniendo datos del paquete de su actividad contenedor.
fuente
La interfaz es una de las mejores soluciones:
Interfaz de pegamento:
Mi actividad:
MyFragment:
fuente
Usé una AppCompatActivity que implementa Date Listeners. Los fragmentos llegaron como una necesidad ya que necesitaba codificar un selector de rango de fechas. Y también necesitaba que el contenedor recibiera las fechas seleccionadas para devolverlas a la actividad principal.
Para la actividad de contenedor, esta es la declaración de clase:
Y las interfaces para las devoluciones de llamada:
Las devoluciones de llamada son cadenas porque las fechas son parámetros en una selección de consulta.
El código para los fragmentos (basado en el fragmento de fecha inicial):
}
Para componer el contenedor + fragmentos, utilicé un ViewPager (AppCompat) con una clase personalizada que extiende FragmentPagerAdapter. Sin diálogos.
fuente
Simplemente puede usar EventBus , es fácil y funciona muy bien
EventBus en 3 pasos
Definir eventos:
public static class MessageEvent { /* Additional fields if needed */ }
Preparar suscriptores: declare y anote su método de suscripción, opcionalmente especifique un modo de hilo:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMessageEvent(MessageEvent event) {/* Do something */};
Registre y anule el registro de su suscriptor. Por ejemplo, en Android, las actividades y los fragmentos generalmente deberían registrarse de acuerdo con su ciclo de vida:
Publicar eventos:
EventBus.getDefault().post(new MessageEvent());
fuente
Sé que esto podría ser tarde. Pero también siempre me perdí en esta pregunta. Estoy compartiendo este enlace ... porque esta es posiblemente la mejor explicación que he encontrado en la web para esto. ¡Esto resuelve Fragmento a actividad y Fragmento a fragmento !
Resuelto y explicado muy bien
fuente
Esto es trabajo para mí..
en Actividad agregue este método
y en Fragment agrega esta línea
fuente
fuente
Otra forma simple de obtener datos, pasados de otra actividad, en un fragmento de una actividad de contenedor: por ejemplo:
En su Activity_A crea una intención como si estuviera enviando datos (String aquí) a otra actividad:
en tu Fragmento, contenido en tu Activity_B:
fuente
getBaseContext()
me da el siguiente error:The method getBaseContext() is undefined for the type new View.OnClickListener(){}