Você provavelmente deve tentar desacoplar o fragmento da atividade, caso queira usá-lo em outro lugar. Você pode fazer isso criando uma interface que sua atividade implementa.
Então você definiria uma interface como a seguinte:
Suponha, por exemplo, que você queira atribuir uma atividade à String e que ela retorne um número inteiro:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
Isso pode ser definido no fragmento ou em um arquivo separado.
Então você teria sua atividade implementando a interface.
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;
}
}
Em seu fragmento, você teria uma variável MyStringListener e configuraria o ouvinte no método fragment onAttach (Activity activity).
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
A primeira resposta definitivamente funciona, mas associa seu fragmento atual à atividade do host. É uma boa prática manter o fragmento dissociado da atividade do host, caso você queira usá-lo em outra atividade.