Probablemente debería intentar desacoplar el fragmento de la actividad en caso de que quiera usarlo en otro lugar. Puede hacer esto creando una interfaz que implemente su actividad.
Entonces definiría una interfaz como la siguiente:
Supongamos, por ejemplo, que desea asignar a la actividad una Cadena y hacer que devuelva un Entero:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
Esto se puede definir en el fragmento o en un archivo separado.
Entonces, su actividad implementaría la interfaz.
public class MyActivity extends FragmentActivity implements MyStringListener{
@Override
public Integer computeSomething(String myString){
/** Do something with the string and return your Integer instead of 0 **/
return 0;
}
}
Luego, en su fragmento, tendría una variable MyStringListener y establecería el oyente en el método fragmentado onAttach (Actividad de actividad).
public class MyFragment {
private MyStringListener listener;
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
listener = (MyStringListener) context;
} catch (ClassCastException castException) {
/** The activity does not implement the listener. */
}
}
}
editar (17.12.2015):onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
La primera respuesta definitivamente funciona, pero combina su fragmento actual con la actividad del host. Es una buena práctica mantener el fragmento desacoplado de la actividad del host en caso de que desee utilizarlo en otra actividad.