Java 从一个活动到另一个活动的自定义对象
我在尝试从一个活动向另一个活动发送信息时遇到一些问题。我想发送一些自定义对象。我在我的第一个活动中加载它们,因为进行了优化,但现在我想在将使用它们的活动中加载它们,所以我的想法是添加额外内容并获取额外内容,但我无法获取它们,因为我真的不知道如何在自定义方法中使用额外内容 这是我的目标:Java 从一个活动到另一个活动的自定义对象,java,android,android-activity,Java,Android,Android Activity,我在尝试从一个活动向另一个活动发送信息时遇到一些问题。我想发送一些自定义对象。我在我的第一个活动中加载它们,因为进行了优化,但现在我想在将使用它们的活动中加载它们,所以我的想法是添加额外内容并获取额外内容,但我无法获取它们,因为我真的不知道如何在自定义方法中使用额外内容 这是我的目标: public class VMyCode{ private String name; private ArrayList<GeneticStep> code; private int i
public class VMyCode{
private String name;
private ArrayList<GeneticStep> code;
private int image;
public VMyCode(){
this.name = null;
this.code = null;
this.image = -1;
}
public VMyCode(String name, ArrayList<GeneticStep> code, int image){
this.name = name;
this.code = code;
this.image = image;
}
public int getImage() {
return image;
}
public String getName() {
return name;
}
public ArrayList<GeneticStep> getCode() {
return code;
}
public void setName(String name) {
this.name = name;
}
public void setCode(ArrayList<GeneticStep> code) {
this.code = code;
}
public void setImage(int image) {
this.image = image;
}
}
公共类VMyCode{
私有字符串名称;
私有数组列表代码;
私有int图像;
公共VMyCode(){
this.name=null;
this.code=null;
这个图像=-1;
}
公共VMyCode(字符串名称、ArrayList代码、整型图像){
this.name=名称;
this.code=代码;
这个图像=图像;
}
public int getImage(){
返回图像;
}
公共字符串getName(){
返回名称;
}
公共ArrayList getCode(){
返回码;
}
公共void集合名(字符串名){
this.name=名称;
}
公共无效设置代码(ArrayList代码){
this.code=代码;
}
公共void setImage(int-image){
这个图像=图像;
}
}
我要做的是从第一个活动发送一个VMyCode的ArrayList,然后在另一个活动中获取它
我试图使我的对象实现Serializable和getSerializableExtras
铸入ArrayList,但看起来不起作用
如果有人有什么想法,欢迎分享!谢谢
Ps:对不起我的英语。一个正确的方法是在课堂上实现Parcelable。 这个答案说明了如何实现它: 您可以按照上面答案中的说明手动执行此操作,也可以使用此选项 它直接提供Parcelable的实现
之后,您可以通过intent将对象作为额外的传递。将核心或bean类作为可包裹的,以便您可以在组件之间发送对象
以下是实施Parcelable并使用意图传递自定义对象的示例。您可以使用Parcelable: 正如前面所做的那样:
setclass d = new setclass ();
d.setDt(5);
LinkedHashMap<String, Object> obj = new LinkedHashMap<String, Object>();
obj.put("hashmapkey", d);
Intent inew = new Intent(SgParceLableSampelActivity.this,
ActivityNext.class);
Bundle b = new Bundle();
b.putSerializable("bundleobj", obj);
inew.putExtras(b);
startActivity(inew);
setclass d=newsetclass();
d、 setDt(5);
LinkedHashMap obj=新LinkedHashMap();
obj.put(“hashmapkey”,d);
Intent inew=新的Intent(SgParceLableSampelActivity.this,
ActivityNext.class);
Bundle b=新Bundle();
b、 可串行化(“bundleobj”,obj);
inew.putExtras(b);
星触觉(inew);
以及在其他活动中获取价值:
try { setContentView(R.layout.main);
Bundle bn = new Bundle();
bn = getIntent().getExtras();
HashMap<String, Object> getobj = new HashMap<String, Object>();
getobj = (HashMap<String, Object>) bn.getSerializable("bundleobj");
setclass d = (setclass) getobj.get("hashmapkey");
} catch (Exception e) {
Log.e("Err", e.getMessage());
}
try{setContentView(R.layout.main);
Bundle bn=新Bundle();
bn=getIntent().getExtras();
HashMap getobj=新的HashMap();
getobj=(HashMap)bn.getSerializable(“bundleobj”);
setclass d=(setclass)getobj.get(“hashmapkey”);
}捕获(例外e){
Log.e(“Err”,e.getMessage());
}
非常感谢,非常有用,做我想做的事情!还有一个小问题:我的自定义对象VMyCode使用一个自定义对象GeneticStep,它是否也应该实现Parcelable?如果是这样,我的所有自定义对象是否都应该在VMyCode或GeneticStep可能使用的对象中使用实现Parcelable?是的,您必须在这些类中实现Parcelable。请参考此问题,它将帮助您使用自定义包裹类实现列表: