intent.puExtra関数を使用して、HashMapを新しいアクティビティに渡そうとしています。デバッガーをステップ実行すると、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);
}
}
サブアクティビティ
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クラスが原因であると思いますが、その理由はわかりません。
あなたの助けが高く評価されます。ありがとう!