シリアライズ:アンドロイドバンドルを使用すると、なぜシリアル化されたスタックはArrayListとして逆シリアル化されますか?
Bundle activityArguments = new Bundle();
Stack<Class<? extends WizardStep>> wizardSteps = new Stack<Class<? extends WizardStep>>();
wizardSteps.push(CreateAlarmStep5View.class);
wizardSteps.push(CreateAlarmStep4View.class);
wizardSteps.push(CreateAlarmStep3View.class);
wizardSteps.push(CreateAlarmStep2View.class);
wizardSteps.push(CreateAlarmStep1View.class);
activityArguments.putSerializable("WizardSteps", wizardSteps);
デシリアライゼーション:
Stack<Class<? extends WizardStep>> wizardSteps =
(Stack<Class<? extends WizardStep>>) getIntent().getExtras().getSerializable("WizardSteps");
例外:
12-20 23:19:45.698:E/AndroidRuntime(12145):java.lang.ClassCastExceptionが:によって引き起こさ:java.util.ArrayListはjava.util.Stackにキャストできません
あなたの答えをありがとう。最後に、私はarraylistを使用しました。それは、要素が読み込まれた後にその要素を削除するというコードの1行を意味していました。スタックは、仕事のための適切なツールだったが、arraylistは遠くない! –
これはすばらしい回避策です。 – dmon
** Vector **はStackListのスーパークラスであり、ArrayListではありません。 –