J'essaie de transmettre un HashMap à une nouvelle activité en utilisant la fonction intent.puExtra. En parcourant le débogueur, il semble qu'il ajoute le HashMap sans problème, mais lorsque startActivty () est appelé, j'obtiens une erreur d'exécution indiquant que Parcel: impossible de marshaler la valeur com.appName.Liquor.
Liquor est une classe personnalisée que j'ai créée, et je pense que cela, en combinaison avec un HashMap, est à l'origine du problème. Si je passe une chaîne plutôt que mon HashMap, il charge l'activité suivante sans problème.
Activité principale
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);
Classe d'alcool
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);
}
}
Sous-activité
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);
Lorsque l'erreur d'exécution existe, elle n'est jamais intégrée à la sous-classe d'activité. Je suis donc à peu près sûr que le problème existe dans l'ajout du HashMap à l'intention, et sur la base de l'erreur, je crois que ma classe d'alcool en est la cause, mais je ne peux pas comprendre pourquoi.
Votre aide sera très appréciée. Merci!