Java 如何使用来自另一个活动的数据填充两点之间的数组

Java 如何使用来自另一个活动的数据填充两点之间的数组,java,android,Java,Android,-------更新------------------------------------- 在本课程中,我进行计算: ... ArrayList<Double> final_cores =new ArrayList<Double>(); ... public void cores_func(){ double initcores=Double.parseDouble(num_cores.getText().toString().trim());

-------更新-------------------------------------

在本课程中,我进行计算:

...
ArrayList<Double> final_cores =new ArrayList<Double>();
...
public void cores_func(){
             double initcores=Double.parseDouble(num_cores.getText().toString().trim());
             double half_time=Double.parseDouble(halftimecores.getText().toString().trim());
             double ttime=Double.parseDouble(timecores.getText().toString().trim());
             double l=Math.log(2)/half_time;
             double fcores=initcores*Math.exp(-l*ttime);
             for (int i=0;i<=ttime;i++){
                  final_cores.add(initcores*Math.exp(-l*ttime));


             }

             //convert ArrayList to double[]

             double[] mydata = new double[final_cores.size()];
             for(int i = 0; i < final_cores.size(); i++) {
                 mydata[i] = final_cores.get(i);
             }
             Intent i=new Intent(this,core_calcs.class);
             i.putExtra("value",fcores);
             i.putExtra("value2",initcores);
             i.putExtra("value3",ttime);
             i.putExtra("final_cores",mydata);
                     startActivity(i);  
         }
          ...
。。。
ArrayList final_cores=新ArrayList();
...
公共空间(U func)(){
double initcores=double.parseDouble(num_cores.getText().toString().trim());
double half_time=double.parseDouble(halftimecores.getText().toString().trim());
double ttime=double.parseDouble(timecores.getText().toString().trim());
双l=数学日志(2)/半小时;
双fcores=initcores*Math.exp(-l*ttime);
对于(int i=0;i1),不幸的是,似乎没有一种简单的方法可以传递双数组列表。有两种方法可以实现这一点:

a) 您需要创建一个类,该类围绕double(注意:原语不是类)并扩展Parcelable(指南在此处:)。如果该类称为NewDouble,则可以使用以下代码:

ArrayList<NewDouble> final_cores = (ArrayList<NewDouble>)extras.getParcelableArrayList("final_cores");
ArrayList final_cores=(ArrayList)extras.getParcelableArrayList(“final_cores”);
b) 如果在将ArrayList放入捆绑包之前将其转换为double[],则可以使用getDoubleArray()转换为double数组

将ArrayList转换为双数组的快速代码:

    double[] doubleArray = new double[final_cores.size()];
    for(int i = 0; i < final_cores.size(); i++) {
        doubleArray[i] = final_cores.get(i);
    }
double[]doubleArray=新的double[final_cores.size()];
对于(int i=0;i
1)不幸的是,似乎没有一种简单的方法可以传递双数组列表。有两种方法可以实现这一点:

a) 您需要创建一个类,该类围绕double(注意:原语不是类)并扩展Parcelable(指南在此处:)。如果该类称为NewDouble,则可以使用以下代码:

ArrayList<NewDouble> final_cores = (ArrayList<NewDouble>)extras.getParcelableArrayList("final_cores");
ArrayList final_cores=(ArrayList)extras.getParcelableArrayList(“final_cores”);
b) 如果在将ArrayList放入捆绑包之前将其转换为double[],则可以使用getDoubleArray()转换为double数组

将ArrayList转换为双数组的快速代码:

    double[] doubleArray = new double[final_cores.size()];
    for(int i = 0; i < final_cores.size(); i++) {
        doubleArray[i] = final_cores.get(i);
    }
double[]doubleArray=新的double[final_cores.size()];
对于(int i=0;i
因此,要将
ArrayList
从一个活动传递到另一个活动,必须使用
Parcelable
界面

您必须创建一个名为MyDouble的类,例如:

public class MyDouble implements Parcelable {
    Double al;


    public MyDouble(Parcel source){
        al = source.readDouble();
    }

    public MyDouble(Double val){
        al = val;
    }

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return this.hashCode();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        // TODO Auto-generated method stub
        dest.writeDouble(al);

    }

    public Double getValueDouble(){
        return this.al;
    }



    public static Parcelable.Creator<MyDouble> CREATOR = new Parcelable.Creator<MyDouble>() {

        @Override
        public MyDouble createFromParcel(Parcel source) {
            // TODO Auto-generated method stub
            return new MyDouble(source);
        }

        @Override
        public MyDouble[] newArray(int size) {
            // TODO Auto-generated method stub
            return new MyDouble[size];
        }
    };

}
public类MyDouble实现可包裹{
双铝;
公共MyDouble(包裹来源){
al=source.readDouble();
}
公共MyDouble(双val){
al=val;
}
@凌驾
公共int描述内容(){
//TODO自动生成的方法存根
返回这个.hashCode();
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
//TODO自动生成的方法存根
目的地可写资产(al);
}
public Double getValueDouble(){
把这个还给我;
}
public static Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共MyDouble createFromParcel(地块源){
//TODO自动生成的方法存根
返回新的MyDouble(源);
}
@凌驾
公共MyDouble[]新数组(整数大小){
//TODO自动生成的方法存根
返回新的MyDouble[大小];
}
};
}
实例化MyDouble的ArrayList并使用:

Intent second = new Intent(this, Second.class);
ArrayList<MyDouble>al = new ArrayList<MyDouble>();

MyDouble m1 = new MyDouble(2.0);
MyDouble m2 = new MyDouble(4.0);
al.add(m1);
al.add(m2);
second.putParcelableArrayListExtra("array_list_test", al);
startActivity(second);
Intent second=新的Intent(这个,second.class);
ArrayList=新的ArrayList();
MyDouble m1=新的MyDouble(2.0);
MyDouble m2=新MyDouble(4.0);
加上(m1);
加总面积(m2);
第二,putParcelableArrayListExtra(“数组列表测试”,al);
星触觉(秒);
在其他活动中,通过执行以下操作检索Double值:

ArrayList<MyDouble> p =b.getParcelableArrayList("array_list_test");
ArrayList p=b.getParcelableArrayList(“数组列表测试”);
我在我的机器上测试了它,它就是这样工作的。希望能有所帮助

一些文件:


因此,要将
ArrayList
从一个活动传递到另一个活动,必须使用
Parcelable
界面

您必须创建一个名为MyDouble的类,例如:

public class MyDouble implements Parcelable {
    Double al;


    public MyDouble(Parcel source){
        al = source.readDouble();
    }

    public MyDouble(Double val){
        al = val;
    }

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return this.hashCode();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        // TODO Auto-generated method stub
        dest.writeDouble(al);

    }

    public Double getValueDouble(){
        return this.al;
    }



    public static Parcelable.Creator<MyDouble> CREATOR = new Parcelable.Creator<MyDouble>() {

        @Override
        public MyDouble createFromParcel(Parcel source) {
            // TODO Auto-generated method stub
            return new MyDouble(source);
        }

        @Override
        public MyDouble[] newArray(int size) {
            // TODO Auto-generated method stub
            return new MyDouble[size];
        }
    };

}
public类MyDouble实现可包裹{
双铝;
公共MyDouble(包裹来源){
al=source.readDouble();
}
公共MyDouble(双val){
al=val;
}
@凌驾
公共int描述内容(){
//TODO自动生成的方法存根
返回这个.hashCode();
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
//TODO自动生成的方法存根
目的地可写资产(al);
}
public Double getValueDouble(){
把这个还给我;
}
public static Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共MyDouble createFromParcel(地块源){
//TODO自动生成的方法存根
返回新的MyDouble(源);
}
@凌驾
公共MyDouble[]新数组(整数大小){
//TODO自动生成的方法存根
返回新的MyDouble[大小];
}
};
}
实例化MyDouble的ArrayList并使用:

Intent second = new Intent(this, Second.class);
ArrayList<MyDouble>al = new ArrayList<MyDouble>();

MyDouble m1 = new MyDouble(2.0);
MyDouble m2 = new MyDouble(4.0);
al.add(m1);
al.add(m2);
second.putParcelableArrayListExtra("array_list_test", al);
startActivity(second);
Intent second=新的Intent(这个,second.class);
ArrayList=新的ArrayList();
MyDouble m1=新的MyDouble(2.0);
MyDouble m2=新MyDouble(4.0);
加上(m1);
加总面积(m2);
第二,putParcelableArrayListExtra(“数组列表测试”,al);
星触觉(秒);
在其他活动中,通过执行以下操作检索Double值:

ArrayList<MyDouble> p =b.getParcelableArrayList("array_list_test");
ArrayList p=b.getParcelableArrayList(“数组列表测试”);
我在我的机器上测试了它,它就是这样工作的。希望能有所帮助

一些文件:


你还没有告诉我们什么是额外的?@Marvin Pinto:我只是使用Bundle extras=getIntent().getExtras();用户在editext中输入我说的数据。对于最终的内核,我使用ArrayList final\u cores=new Arr