Sie sollten wahrscheinlich versuchen, das Fragment von der Aktivität zu entkoppeln, falls Sie es woanders verwenden möchten. Sie können dies tun, indem Sie eine Schnittstelle erstellen, die Ihre Aktivität implementiert.
Sie würden also eine Schnittstelle wie die folgende definieren:
Angenommen, Sie möchten der Aktivität einen String geben und eine Ganzzahl zurückgeben:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
Dies kann im Fragment oder in einer separaten Datei definiert werden.
Dann würden Sie Ihre Aktivität die Schnittstelle implementieren lassen.
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;
}
}
Dann hätten Sie in Ihrem Fragment eine MyStringListener-Variable und würden den Listener in der Methode fragment onAttach (Activity activity) festlegen.
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. */
}
}
}
bearbeiten (17.12.2015):onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
Die erste Antwort funktioniert definitiv, aber sie koppelt Ihr aktuelles Fragment mit der Hostaktivität. Es empfiehlt sich, das Fragment von der Hostaktivität zu entkoppeln, falls Sie es für eine andere Aktivität verwenden möchten.