Muhtemelen başka bir yerde kullanmak istemeniz durumunda parçayı etkinlikten ayırmaya çalışmalısınız. Bunu, etkinliğinizin uyguladığı bir arayüz oluşturarak yapabilirsiniz.
Yani aşağıdaki gibi bir arayüz tanımlarsınız:
Örneğin, etkinliğe bir Dize vermek ve bir Tamsayı döndürmesini istediğinizi varsayalım:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
Bu, parçada veya ayrı bir dosyada tanımlanabilir.
Daha sonra etkinliğinizin arayüzü uygulamasını sağlarsınız.
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;
}
}
Sonra parçanızda bir MyStringListener değişkeni olur ve dinleyiciyi parçalı onAttach (Activity activity) yöntemine ayarlarsınız.
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. */
}
}
}
düzenlemek (2015/12/17):onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
İlk cevap kesinlikle işe yarıyor ancak mevcut parçanızı ana bilgisayar etkinliği ile birleştiriyor. Başka bir etkinlikte kullanmak istemeniz durumunda parçayı ana bilgisayar etkinliğinden ayırmak için iyi bir uygulamadır.