如何从一个actvity传递对象到另一个actvity在android系统

问题描述:

设置如何从一个actvity传递对象到另一个actvity在android系统

ShopProductModel object=shopProductModelList.get(position); 
Intent myintenet = new Intent(context, ProductDetailActivity.class); 
myintenet.putExtra("object", object); 
context.startActivity(myintenet); 

得到

Intent intent = getIntent(); 
object = (ShopProductModel) intent.getParcelableExtra("object"); 

这个代码,我想从一个活动传递到另一个数据,但问题来了一个参数快到空时,我得到的对象:

这里是JSON对象结构:https://paste.ofcode.org/UnwVJhza7KV82uMY46KraS

在这个产品详细信息即将null我不知道我在做什么以下错误是我的模型类: https://paste.ofcode.org/BNhNCjuzGDwvU3SrbUjdz7请建议我这个有什么问题。在设置期间,productDetails中没有null,而set中的productDetails中的值为null。

+1

尝试getSerializable()方法instaed getParcelable的()。 – Priya

+0

但是我们在android @Priya中使用getparcelable – Adevelopment

+0

@Adevelopment看到我的答案先生。 –

,你要传递的值 - 这条线只需添加到您的新活动

String x= getIntent().getExtras().getString("object"); 
+0

意味着我们在哪里获得对象? – Adevelopment

1,如果你想使用getParcelableExtra()方法比你要implements Parcelable你类

public class kShopProductModel implements Parcelable 

发送数据像这样

ShopProductModel object=shopProductModelList.get(position); 
      Intent myintenet = new Intent(context, ProductDetailActivity.class); 
      myintenet.putExtra("object", object); 
      context.startActivity(myintenet); 

检索数据

Intent intent = getIntent(); 
     ShopProductModel object = (ShopProductModel) intent.getParcelableExtra("object"); 

2.,如果你想使用getSerializableExtra()

你只需要implements Serializable到模型类kShopProductModel

@SuppressWarnings("serial") 
public class kShopProductModel implements Serializable 

比使用发送对象意图

ShopProductModel object=shopProductModelList.get(position); 
     Intent myintenet = new Intent(context, ProductDetailActivity.class); 
     myintenet.putExtra("object", object); 
     context.startActivity(myintenet); 

检索

Intent intent = getIntent(); 
ShopProductModel object = (ShopProductModel) intent.getSerializableExtra("object"); 
+0

down voter你能解释一下原因,所以我可以改进ans –

+0

因为你是可实现的序列化,并且你使用parcelable获取值。 –

+0

@AndyDeveloper我刚刚更新我的 –

尝试用下面的代码:

//To pass object: 
intent.putExtra("MyClass", obj); 

// To retrieve object in second Activity 
getIntent().getSerializableExtra("MyClass"); 

您正在使用getParcelableExtra越来越ShopProductModel的对象,所以你必须实现Parcelable您ShopProductModel。您可以参考this link了解如何实现parcelable。

public class ShopProductModel implements Parcelable 

// When you get the object. 
Intent intent = getIntent(); 
object = (ShopProductModel) intent.getParcelableExtra("object"); 

OR

如果您正在使用getSerializableExtra越来越ShopProductModel的对象,所以你必须实现Serializable您ShopProductModel。您可以参考this link了解如何实现parcelable。

public class ShopProductModel implements Serializable 

// When you get the object. 
Intent intent = getIntent(); 
object = (ShopProductModel) intent.getSerializableExtra("object"); 

如果您实现了Parcelable,ShopProductModel看起来像这样。

public class ShopProductModel implements Parcelable 
{ 

protected ShopProductModel(Parcel in) { 
} 

public static final Creator<ShopProductModel> CREATOR = new Creator<ShopProductModel>() { 
    @Override 
    public ShopProductModel createFromParcel(Parcel in) { 
     return new ShopProductModel(in); 
    } 

    @Override 
    public ShopProductModel[] newArray(int size) { 
     return new ShopProductModel[size]; 
    } 
}; 

@Override 
public int describeContents() 
{ 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
} 
} 

如果你想传递一个单独的对象,然后在模型类中实现足够的序列化。做到这一点

public class ShopProductModel implements Serializable { 

} 

的传递