Java 如何将可分配阵列数据发送回父活动android?
我在举一个例子 用于将数据lin列表数组从子活动发送到父活动,但 检索按意图发送的数组列表时在父活动中获取错误 以下是代码: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
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);}
这是不同的。很高兴能帮助您。。享受编码乐趣:)