I need your help, I cannot understand what's happening?
I'm trying to send a TreeMap between 2 activities, the code is something like this:
class One extends Activity{
public void send(){
Intent intent = new Intent(One.this, Two.class);
TreeMap<String, String> map = new TreeMap<String, String>();
map.put("1","something");
intent.putExtra("map", map);
startActivity(intent);
finish();
}
}
class Two extends Activity{
public void get(){
(TreeMap<String, String>) getIntent().getExtras().get("map");//Here is the problem
}
}
This returns to me HashMap cannot be cast to TreeMap. What
As alternative to @Jave's suggestions, if you really need the data structure to be a
TreeMap
, just use the appropriate constructor that takes another map as data source. So on the receiving end (Two
) do something like:However, depending on your project, you probably don't have to worry about the exact
Map
implementation. So in stead, you could just cast to theMap
interface:Instead of casting the result directly to a
TreeMap
, you can create a newTreeMap<String, String>
and use theputAll()
-method:Sounds like it serializes to a HashMap and that's what you're getting. Guess you're gonna have to settle for a HashMap. Alternatively you can create your own helper class and implement Parcelable, then serialize the key/strings in order.