我正在做一个小游戏,有一些问题。
这是菜单
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch (arg0.getId()){
case R.id.bStartGame:
Intent a = new Intent(Menu.this, Action.class);
startActivityForResult(a, 1);
break; }然后启动一个表面视图的活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new GameView(this));
}然后是带有游戏机制的surfaceView。
我的大部分代码都在这个视图中。
现在我的问题是为游戏屏幕找到一个好的解决方案。
如果我在表面视图中开始一个新的活动,它可以工作--但是我得不到result(),这是在一个会话中获得的分数。
所以现在我想问你们如何解决这个问题。
我想了一个办法,但不知道如何实现它。这将是将高分从表面视图传递给活动,并将其设置为(菜单活动返回的)结果。并通过对话框启动xml文件,这将是游戏屏幕,一旦玩家触摸后退按钮,他就会返回到菜单,在那里他可以看到他所取得的成绩。
你能告诉我怎么编码吗?
Kind问候Denis
发布于 2012-04-26 07:08:28
有很多方法可以解决这个问题:
-use startActivityForResult,然后从您的新活动中发送回来,使用onActivityResult在旧活动中捕获它(检查https://developer.android.com/reference/android/app/Activity.html)
-do我所做的(懒惰的方式:):使用startActivity()启动新的活动,并将高分作为额外数据添加到意图中。在您的新活动中,使用getIntent().getInt (随便什么)来获取发送的分数数据,并随心所欲地处理它。然后关闭该活动,您将返回到前一个持有您的表面视图的活动。
现在的诀窍是:在你开始新的活动之前,将它的分数添加到意图中,只需在表面视图的活动中运行与在新活动中相同的分数计算!如此一来,当你返回到surfaceview的活动状态时,你仍然会有正确的,新的分数(如果存储/恢复是正确的;不要忘了把它添加到你的保存/恢复状态和/或表面视图的私有变量中)!
唯一的缺点是,你将有两个地方,你必须更新你的评分机制。这不是一个好的编程。但它是有效的,而且很容易。
https://stackoverflow.com/questions/10214538
复制相似问题