我正在开发一个基于回合的多人支持的游戏。要获取播放机当前游戏的列表,我使用GamesClient.loadTurnBasedMatches方法。这很好,但是当我尝试打开一个新的活动并将一个匹配传递给它时,就会崩溃。启动新活动的代码是
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对象,名为
它实际崩溃的行是:
match = getIntent().getExtras().getParcelable("match");现在,我不确定这是我的错,还是在play-services-lib中有一个bug。还是跟卫兵有关?顺便说一句,如果我使用构建的意图向用户展示他的游戏,同样的方法是有效的。( onActivityResult)
if (request == RC_LOOK_AT_MATCHES) {
TurnBasedMatch match = data.getParcelableExtra(GamesClient.EXTRA_TURN_BASED_MATCH);
if (match != null)
openMatch(match);
}发布于 2014-02-04 11:13:41
我只将matchId发送到下一个活动,从而成功地解决了这个问题。在该活动中,我使用GamesClient.getTurnBasedMatch。这可能是默认意图在后台这样做,但我不确定。
发布于 2014-02-03 21:03:33
您的TurnBasedMatch必须实现Parcelable合同。见这里的例子或这里
发布于 2015-06-23 23:53:59
试一试
intent.putExtra("match", new TurnBasedMatchEntity(match));TurnBasedMatchEntity是一个实现TurnBasedMatch并支持作为Parcelable发送的类。你可以像以前一样用同样的方式检索它。
TurnBasedMatch match = getIntent().getExtras().getParcelable("match");https://stackoverflow.com/questions/21537618
复制相似问题