Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从一个活动到另一个活动的自定义对象_Java_Android_Android Activity - Fatal编程技术网

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。请参考此问题,它将帮助您使用自定义包裹类实现列表: