I am getting
java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.LinkedHashMap
at LinkedHashMap<String, String> dataHashMap = (LinkedHashMap<String, String>) intent.getSerializableExtra("tests.test.MyApp.A.EXTRA_KEY");
in the given (relevant parts of) code of Activity B.
In Fragment A, I have the following check:
Log.i(TAG, "THE TYPE OF THE MAP RETURNED FROM populateSelectedEntryList(selectedResultEntry) IS " + populateSelectedEntryList(selectedResultEntry).getClass().getSimpleName() + ".");//******PRINTS LinkedHashMap**********************
which prints LinkedHashMap
.
In Activity B, I have the following check:
LinkedHashMap<String, String> dataHashMap = (LinkedHashMap<String, String>)intent.getSerializableExtra("tests.test.MyApp.A.EXTRA_KEY");//**********ClassCastException*****************
which prints
HashMap
.
The question is why? Why is the system converting my LinkedHashMap to HashMap. How do i force the LinkedHashMap to continue to be a LinkedHashMap when it is passed in an intent as a Serializable?
RELEVANT PARTS OF CODE:
In Fragment A,
public class A extends Fragment {
...
public void onListItemClick(...) {
Intent intent = new Intent(getActivity(), B.class);
...
intent.putExtra("tests.test.MyApp.A.EXTRA_KEY", populateSelectedEntryList(selectedResultEntry));
Log.i(TAG, "THE TYPE OF THE MAP RETURNED FROM populateSelectedEntryList(selectedResultEntry) IS "
+ populateSelectedEntryList(selectedResultEntry).getClass().getSimpleName() + ".");//******PRINTS LinkedHashMap**********************
startActivity(intent);
};
...
private LinkedHashMap<String, String> populateSelectedEntryList(MyParser.Entry selectedResultEntry) {
LinkedHashMap<String, String> selectedEntryMap = new LinkedHashMap<>();
...
return selectedEntryMap;
}
}
And inside Activity B,
public class B extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Intent intent = getIntent();
LinkedHashMap<String, String> dataHashMap = (LinkedHashMap<String, String>) intent.getSerializableExtra("tests.test.MyApp.A.EXTRA_KEY");
} //**********ClassCastException*****************
...
}