2
我想通过一个Intent将TreeMap
从一个活动传递给另一个活动。但Android以某种方式将其转换为HashMap
。Intent中的TreeMap变为HashMap
在新创建的项目中有两个空白活动,在模拟器中运行MainActivity
会生成java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.TreeMap
。
第一项活动:
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);
}
}
次活动:
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");
}
}
奇怪的是,在第一项活动中的注释代码运行没有任何问题。
这似乎回答你的问题。 http://stackoverflow.com/questions/12300886/linkedlist-put-int-intent-extra-gets-recast-to-arraylist-when-retrieving-in-nex/12305459#12305459 – 2015-03-18 21:31:53
它的确,非常感谢! – TheGuy 2015-03-18 21:43:54