Ich versuche, eine HashMap mit der Funktion intent.puExtra an eine neue Aktivität zu übergeben. Beim Durchlaufen des Debuggers scheint die HashMap kein Problem hinzuzufügen. Wenn jedoch startActivty () aufgerufen wird, wird ein Laufzeitfehler angezeigt, der besagt, dass Parcel den Wert com.appName.Liquor nicht marshallen kann.
Liquor ist eine benutzerdefinierte Klasse, die ich erstellt habe, und ich glaube, dass sie in Kombination mit einer HashMap das Problem verursacht. Wenn ich anstelle meiner HashMap eine Zeichenfolge übergebe, wird die nächste Aktivität problemlos geladen.
Hauptaktivität
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);
Alkoholklasse
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);
}
}
Unteraktivität
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);
Wenn der Laufzeitfehler vorliegt, wird er nie in die Unteraktivitätsklasse aufgenommen. Ich bin mir ziemlich sicher, dass das Problem beim Hinzufügen der HashMap zur Absicht besteht, und basierend auf dem Fehler glaube ich, dass meine Liquor-Klasse die Ursache ist, aber ich kann nicht herausfinden, warum.
Ihre Hilfe wird sehr geschätzt. Vielen Dank!