2013-03-21 28 views
7

Khi tạo một đoạn, tôi gặp getActivity() là rỗng. Vì vậy, để thu hẹp vấn đề, tôi giữ một bản sao hoạt động cục bộ trong onAttach (Hoạt động hoạt động), theo định nghĩa là khi nó được gắn với một hoạt động.onAttach hoạt động là null

Tuy nhiên, tôi đã ghi lại hoạt động trong onAttach và nó vẫn không có giá trị.

Tôi chỉ gặp sự cố này trong 2.3.6 trở xuống.

Đây có phải là sự cố đã biết với gói hỗ trợ không?

+0

Điều này có xảy ra sau khi xoay thiết bị không? Dù sao điều gì sẽ xảy ra nếu bạn chờ 'onActivityCreated()'? – Sam

+0

Ứng dụng này nói riêng đã tắt tính năng xoay vòng. onActivityCreated() vẫn có getActivity() là null, bởi vì trước đây tôi đã giữ một bản sao cục bộ để tìm ra nơi nó là null. Thao tác giao diện người dùng của tôi là cách được truyền và getActivity() vẫn là null. –

Trả lời

-3

Vấn đề này là do các gói hỗ trợ nó có nghĩa là đoạn từ android 3.0 trở lên có nghĩa là mức độ API 11 và UP như vậy cho chắc chắn bạn sẽ phải đối mặt với vụ tai nạn ứng dụng cho android 2.3.6 gingerbird

this.getActivity(); 
+0

Mike đã biết đây là một phần của gói hỗ trợ và đó là một liên kết đến blog của riêng bạn, bạn có thực sự trả lời câu hỏi này không? Nếu có thì hãy đăng giải pháp ở đây, nếu không thì hãy xóa nó đi vì bạn chỉ đang quảng cáo và không trả lời câu hỏi. – Sam

+0

Đây không phải là câu trả lời đúng, thực hiện nghiên cứu của bạn, không quảng bá trang web của riêng bạn – Tobrun

+0

http://developer.android.com/reference/android/support/v4/app/Fragment.html –

7

Hàng loạt các phương pháp được gọi để đưa một đoạn lên trạng thái được tiếp tục lại là:

  • onAttach (Hoạt động) được gọi là đoạn được liên kết với hoạt động của nó.
  • onCreate (Bundle) được gọi để tạo phân đoạn ban đầu.
  • onCreateView (LayoutInflater, ViewGroup, Bundle) tạo và trả về phân cấp chế độ xem được liên kết với đoạn.
  • onActivityCreated (Bundle) cho biết đoạn hoạt động của nó đã hoàn thành Activity.onCreate() của riêng nó.
  • onViewStateRestored (Bundle) cho biết phân đoạn rằng tất cả trạng thái đã lưu của phân cấp chế độ xem của nó đã được khôi phục.
  • onStart() làm cho đoạn hiển thị cho người dùng (dựa trên hoạt động có chứa của nó đang được bắt đầu).
  • onResume() làm cho đoạn tương tác với người dùng (dựa trên hoạt động có chứa của nó đang được tiếp tục).

Phương thức đậm phải là phương thức getActivity không trả về giá trị rỗng nữa.

phương thức onAttach không nên được sử dụng để gọi phương thức của đối tượng hoạt động, Nó nên được sử dụng để khởi tạo giao diện gọi lại. Bạn có thể tìm thấy ví dụ về các giao diện này here.

+1

Thực tế là nó là null.Tôi đã chắc chắn gọi super.onAttach trước rồi theo dõi hoạt động trong param của onAttach, nó là null. Đó là một tập hợp con rất nhỏ của người dùng của chúng tôi với 2.3.6, dẫn tôi đến nghi ngờ rằng đó là một lỗi. getActivity(), không chỉ trên onActivityCreated (Bundle), nhưng tất cả các con đường xuống onResume, hiển thị như là null, đó là những gì nhắc tôi theo dõi tại onAttach đầu tiên. –

+1

Tôi đã chạy mã tương tự trên một tập lớn các thiết bị 2.x. Tôi đã sử dụng để có nullpointers tương tự nhưng những người đã được giải quyết bằng cách di chuyển một số mã để onResume(). – Tobrun

+0

Đâu là điểm để khởi tạo trình lắng nghe trong onAttach khi chúng có thể được khởi tạo từ null và do đó giữ nguyên null. –

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