2015-07-11 19 views
6

Tôi đang sử dụng FragmentPagerAdapter với các đoạn. Vấn đề của tôi là khi tôi gọi setCurrentItem, phương thức OnCreateView của phân đoạn đang được nạp được gọi hai lần. Tuy nhiên, điều quan trọng cần lưu ý là đoạn không được tạo lại, nó chỉ đơn giản là nối lại. Tôi đang tuyệt vọng để tìm một giải pháp khiến OnCreateView chỉ được gọi một lần.Đoạn Android OnCreateView được gọi hai lần

Tôi đã lấy một cái nhìn tại các câu hỏi sau đây và một số chi tiết, nhưng không ai trong số họ có câu trả lời cho trường hợp của tôi:

Android oncreateview called twice

OnCreateView called multiple times/Working with ActionBar and Fragments

Fragment onCreateView and onActivityCreated called twice

Hầu hết các câu hỏi tôi thấy không quan tâm đến FragmentViewPagers, khiến chúng hầu như không hữu ích.

Tôi sẽ rất biết ơn vì bất kỳ trợ giúp nào!

Trả lời

4

Tôi đang sử dụng FragmentPagerAdapter với phân đoạn. Vấn đề của tôi là khi tôi gọi setCurrentItem, phương thức OnCreateView của đoạn đang được nạp được gọi hai lần. Tuy nhiên, điều quan trọng cần lưu ý là rằng đoạn không được tạo lại, nó chỉ đơn giản là tiếp tục. Tôi là tuyệt vọng để tìm giải pháp khiến OnCreateView chỉ được gọi là được gọi một lần.

Nó không được gọi hai lần. Những gì bạn đang gặp phải là hành vi mặc định của ViewPager, lưu trữ luôn luôn ít nhất một trong các trang của nó (Fragment), tùy thuộc vào giá trị của setOffscreenPageLimit(int limit). Vì vậy, onCreateView được gọi một lần cho mỗi trường hợp được trả về bởi getItem

+0

Tôi không hiểu những gì bạn đang nói. Bạn có nói rằng khi tôi chuyển sang một trang, nó sẽ tải các mảnh mà còn tải một phiên bản bộ nhớ cache, do đó oncreateview được gọi là hai lần? – Userrrrrrrrr

+0

vâng, nó ít quặng hơn. – Blackbelt

+0

Điều này đánh tôi là lạ, bởi vì oncreateview được gọi hai lần bất cứ khi nào tôi chuyển sang trang phân đoạn, ngay cả khi tôi chỉ ở trang tiếp giáp với trang đó. Điều này sẽ gợi ý rằng người xem tạo một bản sao được lưu trong bộ nhớ cache ngay cả khi có một bản sao. Nếu bộ nhớ cache là dư thừa, như bằng chứng này dường như gợi ý, làm thế nào tôi có thể thoát khỏi bản thân mình của hành vi này? – Userrrrrrrrr

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