Sie sollten wahrscheinlich versuchen, das Fragment von der Aktivität zu entkoppeln, falls Sie es an anderer Stelle verwenden wollen. 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:
Nehmen wir an, Sie möchten der Aktivität einen String geben und sie soll einen Integer zurückgeben:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
Dies kann im Fragment oder in einer separaten Datei definiert werden.
Dann müsste Ihre Aktivität die Schnittstelle implementieren.
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 würden Sie in Ihrem Fragment eine MyStringListener-Variable haben und Sie würden den Listener in der Fragment onAttach(Activity activity)-Methode 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. */
}
}
}
edit(17.12.2015): onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
Die erste Antwort funktioniert auf jeden Fall, aber sie verbindet Ihr aktuelles Fragment mit der Host-Aktivität. Es ist eine gute Praxis, das Fragment von der Host-Aktivität zu entkoppeln, falls Sie es in einer anderen Aktivität verwenden möchten.