ฉันกำลังพยายามส่งต่อ HashMap ไปยังกิจกรรมใหม่โดยใช้ฟังก์ชัน Intent.puExtra เมื่อก้าวผ่านดีบักเกอร์ดูเหมือนว่าจะเพิ่ม HashMap ก็ไม่มีปัญหาอย่างไรก็ตามเมื่อ startActivty () ถูกเรียกว่าฉันได้รับข้อผิดพลาดรันไทม์ที่ระบุว่า Parcel: ไม่สามารถ marshal ค่า com.appName.Liquor
สุราเป็นคลาสแบบกำหนดเองที่ฉันสร้างขึ้นและฉันเชื่อว่าเมื่อใช้ร่วมกับ HashMap ทำให้เกิดปัญหา ถ้าฉันส่งสตริงแทนที่จะเป็น HashMap ของฉันมันจะโหลดกิจกรรมถัดไปได้ไม่มีปัญหา
กิจกรรมหลัก
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String cat = ((TextView) view).getText().toString();
Intent i = new Intent(OhioLiquor.this, Category.class);
i.putExtra("com.appName.cat", _liquorBase.GetMap());
startActivity(i);
คลาสสุรา
public class Liquor
{
public String name;
public int code;
public String category;
private HashMap<String, Bottle> _bottles;
public Liquor()
{
_bottles = new HashMap<String, Bottle>();
}
public void AddBottle(Bottle aBottle)
{
_bottles.put(aBottle.size, aBottle);
}
}
กิจกรรมย่อย
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
HashMap<Integer, Liquor> map = (HashMap<Integer, Liquor>)getIntent().getSerializableExtra("com.appName.cat");
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, GetNames(map)));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
เมื่อมีข้อผิดพลาดรันไทม์อยู่จะไม่ทำให้ลงในคลาสกิจกรรมย่อย ดังนั้นฉันค่อนข้างแน่ใจว่ามีปัญหาในการเพิ่ม HashMap ลงในจุดประสงค์และจากข้อผิดพลาดที่ฉันเชื่อว่าคลาส Liquor ของฉันเป็นสาเหตุ แต่ฉันไม่สามารถหาสาเหตุได้
ความช่วยเหลือของคุณจะได้รับการชื่นชมมาก ขอบคุณ!