Tôi đang cố gắng để vượt qua một mảng của Address đối tượng đến một hoạt động thông qua một đối tượng Intent.Làm thế nào để vượt qua một mảng của các đối tượng địa chỉ để một Acitvity khác
Khi lớp Địa chỉ triển khai giao diện Parcelable Tôi cố thực hiện các thao tác sau. Tôi nhận được một đối tượng List Address từ một đối tượng Geocoder, mà tôi chuyển đổi thành một mảng các đối tượng Address. Sau đó, tôi đặt mảng này vào Intent và gọi hoạt động.
final Address[] addresses = addresseList.toArray(new Address[addresseList.size()]);
final Intent intent = new Intent(this, SelectAddress.class);
intent.putExtra(SelectAddress.INTENT_EXTRA_ADDRESSES, startAddresses);
startActivityForResult(intent, REQUEST_CODE_ACTIVITY_SELECT_ADDRESSES);
Trên hoạt động khác, tôi cố gắng truy xuất Địa chỉ [] từ Intent với đoạn mã sau. Nhưng cuộc gọi của dòng cuối cùng kết thúc bằng một ClassCastException Landroid.os.Parcelable
.
Bundle bundle = getIntent().getExtras();
Address[] addresses = (Address[]) bundle.getParcelableArray(INTENT_EXTRA_ADDRESSES);
Tôi đang làm gì sai? Làm cách nào để truy xuất Địa chỉ [].
"Hi Tôi đang cố gắng để vượt qua một loạt các đối tượng Địa chỉ để Hoạt động khác thông qua một đối tượng Intent." -- tại sao? Đối với tôi, việc truyền các đối tượng phức tạp giữa các hoạt động là một mùi mã. Hãy suy nghĩ về tính năng bổ sung 'Intent' như là các tham số GET trên một URL. Nếu đây là hai trang Web, bạn sẽ chuyển một loạt các đối tượng 'Address' như các tham số GET trên một URL trong một liên kết? Giả sử rằng việc truyền một mảng các đối tượng 'Address' là không thể tránh khỏi, thì kiểu đối tượng mà bạn đang quay trở lại là gì? Dòng 'ClassCastException' sẽ cho bạn biết điều đó. – CommonsWare
Loại được đề cập bởi ClassCastException là một Landroid.os.Parcelable. – Flo
Về bạn lo ngại về việc truyền một mảng các đối tượng phức tạp đến một hoạt động. Những gì tôi muốn làm là cung cấp cho người dùng một hoạt động thứ hai nơi anh ta có thể chọn từ danh sách địa chỉ, khi tìm kiếm địa chỉ trong hoạt động đầu tiên đã trả lại nhiều kết quả. Làm thế nào bạn sẽ thực hiện điều này mà không cần chuyển các địa chỉ đến hoạt động thứ hai để hiển thị chúng trong một spinner, do đó, người dùng có thể chọn một trong số họ? – Flo