5

similar question nơi hầu hết các lời khuyên để sử dụng getActivity() để có được ngữ cảnh của một đoạn, nhưng làm thế nào để có được tham chiếu đến hoạt động/ngữ cảnh nếu đoạn được tách ra (trong trường hợp này, getActivity() trả về null)?Nhận bối cảnh/hoạt động trong phân đoạn tách rời?

Tình huống của tôi là đoạn của tôi bắt đầu AsyncTask, khi hoàn thành, gọi phương thức onSuccess() của đoạn của tôi. Nhưng phương pháp onSuccess() của phân đoạn của tôi yêu cầu một ngữ cảnh để hiển thị thông báo Bánh mì nướng hoặc để truy cập vào các tùy chọn được chia sẻ. Vì vậy, có một cách đáng tin cậy để có được bối cảnh?

Một cách tôi đang xem xét là chuyển đối tượng ngữ cảnh vào hàm tạo AsyncTask của tôi và chuyển nó trở lại phương thức gọi lại onSuccess() đã nói ở trên của tôi - nhưng điều này có thể dẫn đến rò rỉ bộ nhớ không?

(. NB - Có một câu trả lời here cho thấy làm thế nào để lấy lại hoạt động hiện tại nhưng, một lần nữa, nó đòi hỏi một bối cảnh hợp lệ)

+0

bạn đã thử getApplicationContext() chưa? –

+1

phương pháp onattach được gọi là đầu tiên, trong đó bạn sẽ nhận được hoạt động refrence, lưu trữ nó và sử dụng nó. – Dev

Trả lời

2

này sử dụng trong đoạn của bạn:

private Context context; 

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     context = activity; 
    } 

sau đó sử dụng bối cảnh nơi bạn muốn

+0

Cảm ơn, nhưng có khả năng rò rỉ bộ nhớ với cách tiếp cận này không? –

0

Bạn nên lưu trữ ngữ cảnh sau khi tạo chế độ xem, khi bạn nhập vào đoạn.

Context context; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_photos, container, false); 
     MainView = rootView; 
     context = getActivity().getApplicationContext(); 
     return rootView; 
    } 

sử dụng ngữ cảnh đó trong phân đoạn của bạn, ở nơi nào bạn muốn.

Các vấn đề liên quan