Tôi biết "rằng trường hợp này là lạnh", nhưng vì tôi tìm thấy chủ đề này đầu tiên, khi tôi đang tìm kiếm chính xác điều tương tự (và tìm thấy câu trả lời ngay bây giờ):
Hãy tưởng tượng Bundle là một tệp XML. Nếu bạn tạo một <BUNDLE name="InstanceName" type="ClassName">
mới, bạn có thể tự do thêm các phần tử và thuộc tính vào một không gian tên mới và trống.
Khi onSaveInstance(Bundle outState)
của MainActivity bạn được gọi là (bạn cũng có thể buộc này trong), bạn có thể tạo mới: Bundle b = new Bundle();
Sau đó gọi của bạn (có thể là không được thừa kế và không overriden) tùy chỉnh Phương pháp onSaveInstance(Bundle b)
trong lớp học của riêng bạn với Gói mới được tạo b. Sau đó (trong onSaveInstance(Bundle outState)
) của MainActivity, hãy gọi outState.putBundle("StringClassAndInstanceName", b);
Khi bạn tìm thấy chuỗi này trong onCreate, bạn có thể sử dụng một công tắc/trường hợp để tái tạo đối tượng này hoặc (tốt hơn) có một chức năng nhà máy ở lớp tùy chỉnh của bạn để làm việc với Gói và "StringClassAndInstanceName".
Tôi thấy ít công việc dịch sang và quay trở lại từ JSON, so với bưu kiện – Arcantos
onSaveInstanceState phải ở cuối chức năng! https://developer.android.com/training/basics/activity-lifecycle/recreating.html –
Mặc dù đây là cách phù hợp để lưu đối tượng tùy chỉnh trong onSaveInstanceState(), bạn phải đảm bảo rằng bạn không lưu các đối tượng lớn bằng cách sử dụng phương thức này . Đây chỉ là để lưu trạng thái của màn hình. Nếu các đối tượng trở nên lớn, có khả năng bạn nhận được ngoại lệ 'TransactionTooLargeException' – abat