Vous devriez probablement essayer de découpler le fragment de l'activité au cas où vous voudriez l'utiliser ailleurs. Vous pouvez le faire en créant une interface que votre activité implémente.
Vous définiriez donc une interface comme celle-ci:
Supposons par exemple que vous vouliez donner à l'activité une chaîne et lui faire retourner un entier:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
Cela peut être défini dans le fragment ou dans un fichier séparé.
Ensuite, votre activité implémenterait l'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;
}
}
Ensuite, dans votre fragment, vous auriez une variable MyStringListener et vous définiriez l'écouteur dans la méthode fragment onAttach (activité d'activité).
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. */
}
}
}
modifier (17.12.2015):onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
La première réponse fonctionne certainement, mais elle associe votre fragment actuel à l'activité de l'hôte. Il est recommandé de conserver le fragment découplé de l'activité hôte au cas où vous souhaiteriez l'utiliser dans une autre activité.