ハッシュマップ(たとえば、MyClass)を拡張しました:
public class MyClass extends HashMap<String, String>
{
// something
}
ここで、アクティビティでこのクラスのオブジェクトをエクストラに配置します(HashMapはシリアル化可能であるため実行できます)。
アクティビティA:
MyClass myClass=new MyClass();
...
Intent i = getIntent();
i.putExtra("key", myClass);
setResult(RESULT_OK, i);
finish();
そして、アクティビティB(onActivityResult)で、値を取得します。
Object o=data.getSerializableExtra("key");
私の問題は、oがMyClassではなく、HashMapであるということです。MyClassにしたいのですが、oがMyClassのインスタンスであると仮定すると、ClassCastExceptionが発生します。
MyClass o=(MyClass) data.getSerializableExtra("key");
なぜスーパークラスインスタンスを返すのですか?
スタック:
07-06 18:32:58.539: E/AndroidRuntime(25268): Caused by: java.lang.ClassCastException: java.util.HashMap
07-06 18:32:58.539: E/AndroidRuntime(25268): at ...Search.onActivityResult(Search.java:158)
07-06 18:32:58.539: E/AndroidRuntime(25268): at android.app.Activity.dispatchActivityResult(Activity.java:3890)
07-06 18:32:58.539: E/AndroidRuntime(25268): at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)