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