tutorial studio programacion fragments example entre dinamicos diferencia activity android android-fragments

programacion - fragments dinamicos android studio



Llamando a los métodos de Actividad desde Fragmento (3)

Utilizo un fragmento solo dentro de una actividad principal específica. Ahora me pregunto si hay inconvenientes si invoco métodos en la actividad principal directamente desde el fragmento incluido como este:

getActivity (). someMethodInParentActivitiy ()

Una solución más común sería definir una interfaz de escucha formal en el fragmento para devolver la llamada a la actividad principal y luego hacer que la actividad implemente esa interfaz.

¿Hay alguna razón (por ejemplo, fiabilidad o velocidad ) por la que debería utilizar la segunda solución más compleja en lugar de las llamadas a métodos directos desde el fragmento hasta la actividad?


Cuando necesito hacer algo como esto, solo uso un BroadcastReceiver para poder llamarlo desde cualquier lugar.

BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action != null) { if (action.equals("WHATEVER_ACTION")) { // Do stuff } } } };

Entonces en mi fragmento solo usaré:

activity.sendBroadcast (nuevo Intento (). setAction ("WHATEVER_ACTION"));


Se necesita hacer un yeso adicional:

Activity activity123 = getActivity(); if(activity123 instanceof ParentActivity) { ((ParentActivity) activity123).someMethodInParentActivity(); }

sin embargo, como @pawelzieba escribió si desea usar ese fragmento en otras actividades, que probablemente sea el caso, no funcionará de esta manera. Saludos


No mires el rendimiento al principio. Recuerde que "la optimización prematura es la raíz de todo mal". El segundo enfoque es mejor porque tu fragmento podría usarse en diferentes actividades. El primer enfoque introduce más dependencias en su código, el fragmento depende del tipo de actividad. Estás perdiendo la capacidad de probar, reutilizar, pequeño complejo. Puede parecer más simple en este momento, pero en el futuro verás ;-)