2013-08-09 41 views
12

Trong ứng dụng của tôi, tôi có chức năng tabbar. Trong một tab tôi đang hiển thị dữ liệu máy chủ trong lisview, và khi nhấp vào trang chi tiết đó cho mục danh sách đó sẽ được mở trong đoạn mới.Làm thế nào để ngăn chặn việc gọi onCreateView khi nút quay lại được nhấn vào đoạn trong android

Nhưng khi tôi nhấn nút quay lại từ trang chi tiết đó, mỗi lần oncreateview được gọi là trang trước đó, vì vậy mỗi lần xem danh sách được tạo và tìm nạp dữ liệu máy chủ mới. Vậy làm thế nào để ngăn chặn như vậy và chỉ hiển thị trạng thái trước đó khi nhấn nút quay lại?

Trả lời

5

Tôi không nghĩ rằng ngăn chặn gọi onCreateView là một ý tưởng tốt, bên cạnh nếu chức năng không được gọi, sẽ có ngoại lệ, vì vậy NO, bạn không nên. Thay vì làm điều đó, tôi đề nghị bạn di chuyển "listview được tạo và tìm nạp dữ liệu máy chủ mới" vào một nơi khác mà bạn có thể gọi một cách rõ ràng (khi bạn muốn, nơi bạn muốn, onCreate() là một nơi tốt), không đặt nó vào onCreateView(). Hi vọng điêu nay co ich.

-1

Bạn nên lưu các đối tượng dữ liệu của mình ngoài các biến xem vì các tham chiếu của chúng cần được cập nhật nếu bạn đang tìm nạp bất kỳ dữ liệu nào từ máy chủ và không muốn thực hiện lại cuộc gọi, sau đó sử dụng phân nhánh để phân nhánh mã đó.

Tạo phương thức init() trong đó bạn thực hiện tất cả các lần khởi tạo và cuộc gọi máy chủ và phân nhánh một cách hợp lý lệnh gọi hàm init() bất cứ khi nào bạn không muốn gọi hàm init().

31

Tôi biết đã quá lâu để đưa ra câu trả lời này nhưng điều tôi đoán là bạn đang thay thế đoạn của mình bằng một đoạn khác. Tôi muốn nói là bạn đang sử dụng

ft.replace(R.id.realTabContent, fragment); 

chuyển sang đoạn khác đó là bạn đang sử dụng trong dung dịch đơn giản như vậy onItemClick của bạn là sử dụng

ft.add(R.id.realTabContent, fragment); 

thay vì thay thế đoạn của bạn.

Hiểu sự khác biệt giữa thay thếthêm. Điều này sẽ giải quyết vấn đề của bạn.

Thay thế: nó sẽ thay thế các đoạn ban đầu và tái tạo quan điểm khi bạn quay trở lại
Add: nó sẽ chỉ cần thêm một đoạn mới để ngăn xếp.

Hy vọng điều này sẽ giúp những người đang đối mặt với cùng một vấn đề ...

+1

nếu chúng ta thiết lập 'Add' sau đó đoạn mới chồng lên cái cũ một –

+0

Đây không phải là chính xác: các tài liệu nói rằng * thêm * sẽ thêm đoạn này vào vùng chứa, không thêm nó vào ngăn xếp lại. https://developer.android.com/reference/android/app/FragmentTransaction.html#add(int,%20android.app.Fragment,%20java.lang.String) – liucheia

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