我正在尝试从一个FragmentActivity向另一个FragmentActivity发送一个Parcelable对象。
发送活动:
Intent intent = new Intent(this, ActivityToSendTo.class);
intent.putExtra("key", objectToSend);
startActivity(intent);
如果我此时插入一个断点,我可以看到'objectToSend'被填充,属性包含数据。
接收活动:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
if(savedInstanceState == null) {
FragmentComments fragment = new FragmentComments();
fragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add(android.R.id.content, fragment).commit();
}
}
如果我在onCreate方法中插入断点并尝试查看objectToSend,我可以看到它存在,但该对象上的所有属性现在都为null。
还有其他人经历过这个吗?我认为它可能是新支持库中的一个错误吗?
任何帮助表示赞赏!
答案 0 :(得分:0)
我了解FragmentComments
是您要传递给其他Activity
的类。
如果是这种情况,则检索对象的代码应该看起来或多或少:
Parcel parcel = (Parcel)getIntent().getParcelableExtra("key");
还要确保FragmentComments
正确实现Parcelable
接口。有关该主题的更多信息,请访问android.developer.com,HERE。
答案 1 :(得分:0)
你的objectToSend
是否从另一个班级延伸?如果是writeToParcel()
方法,请致电super.writeToParcel()
并传递您拥有的参数。然后在构造函数中,确保它接受一个Parcel对象并调用super()
构造函数。所以这两种方法看起来像
protected ObjectToSend(Parcel in){
super(in);
someNum = in.readInt();
}
@Override
public void writeToParcel(Parcel dest, int flags){
super.writeToParcel(dest, flags);
dest.writeInt(someNum);
}
我遇到了同样的问题,这就解决了!希望它有所帮助!