Я намагаюся передати HashMap новій діяльності за допомогою функції intent.puExtra. Пройшовши через відладчик, здається, що він додає HashMap жодних проблем, проте, коли викликається startActivty (), я отримую помилку виконання, вказуючи, що Parcel: не в змозі перевести значення com.appName.Liquor.
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);
}
}
Sub Активність
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, але я не можу зрозуміти, чому.
Ваша допомога буде дуже вдячна. Дякую!