Java 如何将可分配阵列数据发送回父活动android?

Java 如何将可分配阵列数据发送回父活动android?,java,android,arrays,android-intent,Java,Android,Arrays,Android Intent,我在举一个例子 用于将数据lin列表数组从子活动发送到父活动,但 检索按意图发送的数组列表时在父活动中获取错误 以下是代码: ArrayList<StockDetails> stockList = new ArrayList<StockDetails>(); setting array list data in some function after that Intent intent = new Intent(); intent.s

我在举一个例子

用于将数据lin列表数组从子活动发送到父活动,但 检索按意图发送的数组列表时在父活动中获取错误

以下是代码:

    ArrayList<StockDetails> stockList = new ArrayList<StockDetails>();

   setting array list data in some function after that 

    Intent intent = new Intent();
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    //intent.putExtra("stkList",bndle);
    intent.putParcelableArrayListExtra("stkList",stockList );
ArrayList stockList=new ArrayList();
然后在某个函数中设置数组列表数据
意图=新意图();
intent.setFlags(intent.FLAG\u ACTIVITY\u CLEAR\u TOP);
//意图。额外(“stkList”,bndle);
意向。putParcelableArrayListExtra(“标准清单”,股票清单);
在父活动中

@SuppressWarnings("unchecked")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {     
    if (resultCode == RESULT_OK ) {    
        if (data.hasExtra("stkList")) {             
            //Bundle wrapper = data.getBundleExtra("stkList");                          
                ArrayList<StockDetails> stockkList = data.getParcelableArrayListExtra("stkList");
                System.out.println("stockkList1::"+stockkList.size());                  
                System.out.println("stockkList2::"+stockkList.get(0).getStkQty());---here the error             

        }
    }
}
@SuppressWarnings(“未选中”)
@凌驾
ActivityResult上受保护的void(int请求代码、int结果代码、意图数据){
如果(resultCode==RESULT_OK){
if(data.hasExtra(“stkList”){
//Bundle wrapper=data.getBundleExtra(“stkList”);
ArrayList stockkList=data.getParcelableArrayListExtra(“stkList”);
System.out.println(“stockkList1::”+stockkList.size());
System.out.println(“stockkList2::”+stockkList.get(0.getStkQty());---这里是错误代码
}
}
}
库存明细类

package com.eanda.mobisale.model;

import java.io.Serializable;

import android.os.Parcel;
import android.os.Parcelable;

public class StockDetails implements Comparable<StockDetails>,Parcelable,Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    // protected variables
    protected int eatPrdSubCatId;
    protected String eatMstStkGrpId;
    protected String stkGrpNm;
    protected String eatMstStkItemId;
    protected String stkItemNm;
    protected int stkQty;

    @Override
    public int compareTo(StockDetails another) {
        if (this.stkItemNm.equals(another.stkItemNm)) {
            return ((Integer) this.eatPrdSubCatId)
                    .compareTo(another.eatPrdSubCatId);
        } else {
            return this.stkItemNm.compareTo(another.stkItemNm);
        }
    }

    @Override
    public String toString() {
        return this.stkItemNm;
    }



    /**
     * @return the eatPrdSubCatId
     */
    public int getEatPrdSubCatId() {
        return eatPrdSubCatId;
    }

    /**
     * @param eatPrdSubCatId
     *            the eatPrdSubCatId to set
     */
    public void setEatPrdSubCatId(int eatPrdSubCatId) {
        this.eatPrdSubCatId = eatPrdSubCatId;
    }

    /**
     * @return the eatMstStkGrpId
     */
    public String getEatMstStkGrpId() {
        return eatMstStkGrpId;
    }

    /**
     * @param eatMstStkGrpId
     *            the eatMstStkGrpId to set
     */
    public void setEatMstStkGrpId(String eatMstStkGrpId) {
        this.eatMstStkGrpId = eatMstStkGrpId;
    }

    /**
     * @return the stkGrpNm
     */
    public String getStkGrpNm() {
        return stkGrpNm;
    }

    /**
     * @param stkGrpNm
     *            the stkGrpNm to set
     */
    public void setStkGrpNm(String stkGrpNm) {
        this.stkGrpNm = stkGrpNm;
    }

    /**
     * @return the eatMstStkItemId
     */
    public String getEatMstStkItemId() {
        return eatMstStkItemId;
    }

    /**
     * @param eatMstStkItemId
     *            the eatMstStkItemId to set
     */
    public void setEatMstStkItemId(String eatMstStkItemId) {
        this.eatMstStkItemId = eatMstStkItemId;
    }

    /**
     * @return the stkItemNm
     */
    public String getStkItemNm() {
        return stkItemNm;
    }

    /**
     * @param stkItemNm
     *            the stkItemNm to set
     */
    public void setStkItemNm(String stkItemNm) {
        this.stkItemNm = stkItemNm;
    }

    /**
     * @return the stkQty
     */
    public int getStkQty() {
        return stkQty;
    }

    /**
     * @param stkQty the stkQty to set
     */
    public void setStkQty(int stkQty) {
        this.stkQty = stkQty;
    }

    @Override
    public int describeContents() {
        return this.hashCode();

    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(stkQty);
        dest.writeString(stkItemNm);        
    }


    public static final Parcelable.Creator<StockDetails> CREATOR
    = new Parcelable.Creator<StockDetails>() {
        public StockDetails createFromParcel(Parcel in) {
            return new StockDetails(in);
        }

        public StockDetails[] newArray(int size) {
            return new StockDetails[size];
        }
    };

     private StockDetails(Parcel in) {
         int qty = in.readInt();
         String  nm = in.readString();
         new StockDetails(qty, nm);
         //stockDetails = new StockDetails(qty, nm);
     }

    public StockDetails(int qty, String nm) {
        this.stkQty = qty;
        this.stkItemNm = nm;
    }

    public StockDetails() {
        // TODO Auto-generated constructor stub
    }
}
package com.eanda.mobisale.model;
导入java.io.Serializable;
导入android.os.packet;
导入android.os.Parcelable;
公共类StockDetails实现可比较、可打包、可序列化{
/**
* 
*/
私有静态最终长serialVersionUID=1L;
//保护变量
受保护的int eatPrdSubCatId;
受保护字符串eatmstskgrpid;
受保护字符串stkGrpNm;
受保护的字符串EATMSTSKITEMID;
受保护字符串stkItemNm;
受保护的int stkQty;
@凌驾
公共整数比较(库存详细信息另一个){
如果(这个.stkItemNm.等于(另一个.stkItemNm)){
返回((整数)this.eatPrdSubCatId)
.compareTo(另一个.eatPrdSubCatId);
}否则{
将这个.stkItemNm.compareTo返回到(另一个.stkItemNm);
}
}
@凌驾
公共字符串toString(){
返回此.stkItemNm;
}
/**
*@返回eatPrdSubCatId
*/
public int getEatPrdSubCatId(){
返回eatPrdSubCatId;
}
/**
*@param eatPrdSubCatId
*要设置的eatPrdSubCatId
*/
公共无效集合eatPrdSubCatId(int eatPrdSubCatId){
this.eatPrdSubCatId=eatPrdSubCatId;
}
/**
*@返回eatmstskgrpid
*/
公共字符串geteatmstskgrpid(){
返回eatmstskgrpid;
}
/**
*@param eatmstskgrpid
*要设置的eatMstStkGrpId
*/
公共void setEatMstTkgrPID(字符串EatMstTkgrPID){
this.eatmstskgrpid=eatmstskgrpid;
}
/**
*@返回stkGrpNm
*/
公共字符串getStkGrpNm(){
返回stkGrpNm;
}
/**
*@param stkGrpNm
*要设置的stkGrpNm
*/
公共无效设置TKGRPNM(字符串stkGrpNm){
this.stkGrpNm=stkGrpNm;
}
/**
*@返回eatmstskitemid
*/
公共字符串geteatmstskitemid(){
返回eatmstskitemid;
}
/**
*@param eatmstskitemid
*要设置的eatMstStkItemId
*/
public void setEatMstStkItemId(字符串eatMstStkItemId){
this.eatMstStkItemId=eatMstStkItemId;
}
/**
*@返回stkItemNm
*/
公共字符串getStkItemNm(){
返回stkItemNm;
}
/**
*@param stkItemNm
*要设置的stkItemNm
*/
公共无效设置tkitemnm(字符串stkItemNm){
this.stkItemNm=stkItemNm;
}
/**
*@返回stkQty
*/
public int getStkQty(){
返回stkQty;
}
/**
*@param stkQty要设置的stkQty
*/
公共作废设置数量(内部设置数量){
this.stkQty=stkQty;
}
@凌驾
公共int描述内容(){
返回这个.hashCode();
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地写入(stkQty);
目的地记录(stkItemNm);
}
公共静态最终包裹。创建者
=新的Parcelable.Creator(){
公共库存详细信息createFromParcel(包裹中){
返回新的库存详细信息(在中);
}
public StockDetails[]新数组(整数大小){
返回新的StockDetails[大小];
}
};
私人库存详细信息(包裹中){
int数量=in.readInt();
字符串nm=in.readString();
新库存详细信息(数量,nm);
//stockDetails=新的stockDetails(数量,nm);
}
公开库存详细信息(整数数量,字符串nm){
此.stkQty=数量;
此值为0.stkItemNm=nm;
}
公开发行股票详情(){
//TODO自动生成的构造函数存根
}
}

获取不正确的记录器StockList1::1和StockList2::0

如果未正确实现,则将地块作为输入的
构造函数应为:

private StockDetails(Parcel in) {
     this.stkQty = in.readInt();
     this.stkItemNm = in.readString();
 }
而且在使用
Parcelable
时,也不需要实现
Serializable


希望这能有所帮助。

同样如此。这是您所拥有的
private StockDetails(包裹内){int qty=in.readInt();String nm=in.readString();new StockDetails(qty,nm);//StockDetails=new StockDetails(qty,nm);}
这是不同的。很高兴能帮助您。。享受编码乐趣:)