1

我正在尝试将 Parcelable 对象从一个 FragmentActivity 发送到另一个。

发送活动:

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,我可以看到它存在,但该对象上的所有属性现在都为空。

有没有其他人经历过这个?我认为这可能是新支持库中的一个错误?

任何帮助表示赞赏!

4

2 回答 2

0

我知道那FragmentComments是你想传给另一个的课程Activity。如果是这种情况,那么检索对象的代码应该或多或少像这样:

Parcel parcel = (Parcel)getIntent().getParcelableExtra("key");

还要确保FragmentComments正确实现Parcelable接口。有关该主题的更多信息,请访问 android.developer.com,此处

于 2012-12-01T18:43:03.907 回答
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);
}

我遇到了同样的问题,这解决了它!希望能帮助到你!

于 2014-11-07T15:00:08.870 回答