Bạn có lẽ nên cố gắng tách rời đoạn từ hoạt động trong trường hợp bạn muốn sử dụng nó ở một nơi khác. Bạn có thể làm điều này bằng cách tạo một giao diện mà hoạt động của bạn thực hiện.
Vì vậy, bạn sẽ xác định một giao diện như sau:
Giả sử ví dụ bạn muốn cung cấp cho hoạt động một Chuỗi và để nó trả về một Số nguyên:
public interface MyStringListener{
public Integer computeSomething(String myString);
}
Điều này có thể được xác định trong đoạn hoặc một tệp riêng biệt.
Sau đó, bạn sẽ có hoạt động của bạn thực hiện giao diện.
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;
}
}
Sau đó, trong đoạn của bạn, bạn sẽ có một biến MyStringListener và bạn sẽ đặt trình nghe theo phương thức phân đoạn onAttach (Hoạt động hoạt động).
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. */
}
}
}
chỉnh sửa (17.12.2015):onAttach(Activity activity) is deprecated, use onAttach(Context context) instead, it works as intended
Câu trả lời đầu tiên chắc chắn có tác dụng nhưng nó kết hợp đoạn hiện tại của bạn với hoạt động của máy chủ. Thực hành tốt của nó để giữ cho các mảnh được tách ra khỏi hoạt động của máy chủ trong trường hợp bạn muốn sử dụng nó trong một tính nhạy cảm khác.