我正在制作一个小游戏并遇到一些问题。
有菜单
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; }
然后启动surfaceview的活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new GameView(this));
}
然后是带有游戏机制的surfaceView。
我的大部分代码都在此视图中。
现在我有问题找到一个很好的游戏过滤器解决方案。
如果我在surfaceview中开始一个新活动,它可以工作 - 但我得不到结果(),这是在会话期间获得的分数。
所以现在我想问你们如何解决这个问题。
我想到了一种方法,但不知道如何实现它。 将高分从surfaceview传递给activity并将其设置为结果(菜单活动返回)。 然后通过对话框启动一个xml文件,这将是游戏过滤器,玩家触摸后退按钮后,他会回到菜单,在那里他可以看到他的成绩。
你能告诉我如何编码吗?
亲切的问候 丹尼斯
答案 0 :(得分:0)
有很多方法可以解决这个问题:
- 使用startActivityForResult,然后从新活动发回,使用onActivityResult在旧活动中捕获它(检查https://developer.android.com/reference/android/app/Activity.html)
-do我做了什么(懒惰,hacky方式:) :)用startActivity()启动新活动,并添加高分作为添加到intent的额外数据。在您的新活动中,使用getIntent()。getInt(ow whatever)获取已发送的分数数据并按照您的意愿进行操作。然后关闭该活动,您将返回上一个持有您的表面视图的活动。
NOW THE TRICK:在您开始新活动之前,将其分数添加到意图中,只需在您的Surfaceview活动中运行与在新活动中相同的分数计算!这样,当你返回到surfaceview的活动时,你仍然会得到正确的新分数(如果存储/ onresume'd正确;不要忘记将它添加到你的保存/恢复状态和/或surfaceview的私有变量) !
唯一的缺点是你必须有两个位置来更新你的得分机制。这不是很好的编程。但它很有效,而且很容易。