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