首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BadParcelableException在故意传递TurnBasedMatch时

BadParcelableException在故意传递TurnBasedMatch时
EN

Stack Overflow用户
提问于 2014-02-03 20:58:37
回答 4查看 350关注 0票数 1

我正在开发一个基于回合的多人支持的游戏。要获取播放机当前游戏的列表,我使用GamesClient.loadTurnBasedMatches方法。这很好,但是当我尝试打开一个新的活动并将一个匹配传递给它时,就会崩溃。启动新活动的代码是

代码语言:javascript
复制
    private void openMatch(TurnBasedMatch match) {
    Intent intent = new Intent(this, MultiPlayerGame.class);
    intent.putExtra("match", match);
    startActivity(intent);
}

但是在执行了这段代码之后,我得到了这个错误:(它是这样的限制,所以我看不到整个包名)

02-03 21:28:02.880: E/AndroidRuntime(5513):java.lang.RuntimeException:无法启动活动ComponentInfo{com.mypackage.MultiPlayerGame}:android.os.BadParcelableException: Parcelable协议需要一个名为Parcelable.Creator对象的Parcelable.Creator对象,名为

它实际崩溃的行是:

代码语言:javascript
复制
match = getIntent().getExtras().getParcelable("match");

现在,我不确定这是我的错,还是在play-services-lib中有一个bug。还是跟卫兵有关?顺便说一句,如果我使用构建的意图向用户展示他的游戏,同样的方法是有效的。( onActivityResult)

代码语言:javascript
复制
if (request == RC_LOOK_AT_MATCHES) {
    TurnBasedMatch match = data.getParcelableExtra(GamesClient.EXTRA_TURN_BASED_MATCH);
if (match != null)
  openMatch(match);
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-04 11:13:41

我只将matchId发送到下一个活动,从而成功地解决了这个问题。在该活动中,我使用GamesClient.getTurnBasedMatch。这可能是默认意图在后台这样做,但我不确定。

票数 0
EN

Stack Overflow用户

发布于 2014-02-03 21:03:33

您的TurnBasedMatch必须实现Parcelable合同。见这里的例子这里

票数 0
EN

Stack Overflow用户

发布于 2015-06-23 23:53:59

试一试

代码语言:javascript
复制
intent.putExtra("match", new TurnBasedMatchEntity(match));

TurnBasedMatchEntity是一个实现TurnBasedMatch并支持作为Parcelable发送的类。你可以像以前一样用同样的方式检索它。

代码语言:javascript
复制
TurnBasedMatch match = getIntent().getExtras().getParcelable("match");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21537618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档