Java 意图中的树映射成为HashMap
我想将一个Java 意图中的树映射成为HashMap,java,android,android-intent,Java,Android,Android Intent,我想将一个TreeMap通过一个意图从一个活动传递到另一个活动。但不知何故,Android在途中将其转换成了一个HashMap 在新创建的具有两个空白活动的项目中,在emulator中运行MainActivity会生成java.lang.ClassCastException:java.util.HashMap不能转换为java.util.TreeMap 第一项活动: import android.content.Intent; import android.support.v7.app.Acti
TreeMap
通过一个意图从一个活动传递到另一个活动。但不知何故,Android在途中将其转换成了一个HashMap
在新创建的具有两个空白活动的项目中,在emulator中运行MainActivity
会生成java.lang.ClassCastException:java.util.HashMap不能转换为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");
}
}
导入android.content.Intent;
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入java.util.TreeMap;
公共类MainActivity扩展了ActionBarActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
意向i=新意向(此,SecondActivity.class);
i、 putExtra(“map”,newtreemap());
//TreeMap m=(TreeMap)i.getSerializableExtra(“map”);
星触觉(i);
}
}
第二项活动:
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");
}
}
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入java.util.TreeMap;
公共类SecondActivity扩展了ActionBarActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_秒);
TreeMap m=(TreeMap)getIntent().getSerializableExtra(“映射”);
}
}
奇怪的是,第一个活动中的注释代码运行时没有任何问题。正如pbabcdefp在上面的注释中所提到的,问题的原因已经描述。有关更详细的说明,请参见
这是一个易于实施的解决方案。这似乎回答了您的问题。是的,非常感谢!