I want to pass a TreeMap
through an Intent from one activity to another one. But somehow Android converts it into a HashMap
on its way.
In a newly created project with two blank activities, running MainActivity
in the emulator produces a java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.TreeMap
.
First activity:
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import java.util.TreeMap;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent i = new Intent(this, SecondActivity.class);
i.putExtra("map", new TreeMap<Long, Long>());
//TreeMap<Long, Long> m = (TreeMap<Long, Long>) i.getSerializableExtra("map");
startActivity(i);
}
}
Second activity:
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import java.util.TreeMap;
public class SecondActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TreeMap<Long, Long> m = (TreeMap<Long, Long>) getIntent().getSerializableExtra("map");
}
}
Strangely enough, the commented code in the first activity runs without any problem.