2012-03-20 20 views
6

Vì vậy, tôi đã đấu tranh với việc đặt một số giá trị vào một gói trong OnSaveInstanceState bị ghi đè của tôi. Tôi cần phải lưu một số đối tượng lớp học về hoạt động khởi động lại, có nghĩa là chúng phải được chuyển nhượng, mà dường như không thể thực hiện cho Monodroid?Monodroid đặt các đối tượng có thể chuyển nhượng thành gói

Nguồn: http://docs.xamarin.com/android/about/limitations

gì tôi có thể làm gì để cứu các đối tượng lớp trong để gói mà không parcelable? Tôi tải dữ liệu từ một máy chủ, và tôi không muốn làm điều đó một lần nữa ví dụ như xoay vòng người dùng, một lần nữa gọi phương thức OnCreate. Vì vậy, nó sẽ được tốt đẹp để có chúng được lưu, trong đó tiết kiệm cho máy chủ một số áp lực trên quay thường xuyên và như vậy.

Trả lời

5

Câu trả lời ban đầu được chấp nhận cho câu hỏi này, trong khi đúng vào thời điểm nó được trả lời, không còn là trường hợp.

Ban đầu tôi đã thực hiện đề nghị trên và sau đó trên qua phải tìm kiếm nhiều mặt hàng này:

http://dan.clarke.name/2012/09/implementing-iparcelable-in-mono-for-android/

Các tính năng hiện đang được hỗ trợ và liên kết ở trên là một nguồn lực lớn về cách thực hiện nó.

+0

Dường như cuối cùng cũng có hỗ trợ cho Bưu kiện trong Monodroid, đây là câu trả lời đúng. –

4

Không thể triển khai giao diện IParcelable trong Mono dành cho Android. Lấy từ the docs:

Giao diện IParcelable không thể được thực hiện vào lúc này vì giao diện android.os.Parcelable yêu cầu:

  • Lớp học thực hiện các giao diện Parcelable cũng phải có một trường tĩnh gọi CREATOR, là đối tượng triển khai giao diện
    Parcelable.Creator.

Vì mandroid.exe hiện không thể tạo trường, giao diện này không thể triển khai được. Hỗ trợ sẽ được thêm vào trong bản phát hành trong tương lai.

Một cách tiếp cận khác bạn có thể thực hiện là chỉ lưu trữ đối tượng bên ngoài hoạt động, chẳng hạn như trong lớp phân lớp Application. Bạn có thể lưu trữ dữ liệu trong lớp ứng dụng của bạn bằng cách sử dụng các thuộc tính tĩnh hoặc bạn có thể truy cập các thuộc tính/phương thức mẫu trên nó bằng cách sử dụng thuộc tính Application từ hoạt động của bạn. Một số chi tiết khác về việc sử dụng Ứng dụng có thể được tìm thấy trong this question.

+0

Tôi đã kết thúc bằng cách sử dụng biến tĩnh cho trường hợp này, nhờ sự giải thích –

+1

Tài liệu đã được cập nhật và được cho là có hỗ trợ cho điều này ("Giới hạn này áp dụng cho các phiên bản trước 4.1. sử dụng thuộc tính ExportAttribute và ExportField để tạo các phương thức và các trường Java có thể được đặt tên rõ ràng. "). Tôi sẽ cung cấp cho nó một shot ngay bây giờ và gửi bất kỳ kết quả tích cực. – samosaris

+1

Ví dụ chính thức của Xamarin: https://github.com/xamarin/monodroid-samples/blob/master/ExportAttribute/ExportAttributeTest/MainActivity.cs – samosaris

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