Saya mencoba meneruskan HashMap ke aktivitas baru menggunakan fungsi intent.puExtra. Melangkah melalui debugger tampaknya menambahkan HashMap tidak ada masalah, namun ketika startActivty () dipanggil saya mendapatkan kesalahan runtime yang menyatakan bahwa Parcel: tidak dapat marshal nilai com.appName.Liquor.
Liquor adalah kelas khusus yang saya buat, dan saya percaya itu, dalam kombinasi dengan HashMap, menyebabkan masalah. Jika saya meneruskan string daripada HashMap saya, itu memuat aktivitas berikutnya tidak ada masalah.
Aktifitas utama
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);
Kelas Minuman Keras
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);
}
}
Sub Kegiatan
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);
Jika error runtime ada, error tersebut tidak pernah membuatnya menjadi kelas sub aktivitas. Jadi saya cukup yakin masalahnya ada dalam penambahan HashMap ke maksud, dan berdasarkan kesalahan saya yakin kelas Liquor saya adalah penyebabnya, tetapi saya tidak tahu mengapa.
Bantuan Anda akan sangat dihargai. Terima kasih!