包裹错误将捆绑包从一个活动传递到另一个活动

Sil*_*ely 1 java android parcelable parceler

我决定使用Parceler,因为它看起来像一个很棒的库,并且得到了作者的很好支持。我正在使用Parceler包装一个对象,并将其传递给捆绑包中的另一个Activity。当我尝试打开对象包装时,出现错误:android.os.Bundle cannot be cast to org.parceler.ParcelWrapper

我的FirstActivity代码:

 User user = responseData.getUser();
    Bundle bundle = new Bundle();
    bundle.putParcelable("User", Parcels.wrap(user));
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    intent.putExtra("User", bundle);
    startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

我的SecondActivity代码:

User user = Parcels.unwrap(this.getIntent().getParcelableExtra("User"));
Run Code Online (Sandbox Code Playgroud)

我怀疑这只是一个新手错误。任何建设性的帮助表示赞赏!

Dam*_*lak 5

您只需要将包装的对象作为的参数putExtra,而不是Bundle。这是解决方案:

User user = responseData.getUser();
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("User", Parcels.wrap(user));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

在SecondActivity上,在其onCreate()方法中执行以下操作:

User user = (User) Parcels.unwrap(getIntent().getParcelableExtra("User"));
Run Code Online (Sandbox Code Playgroud)