Android surfaceview、活动、startactivityforresult、活动中的对话框

Android surfaceview、活动、startactivityforresult、活动中的对话框,android,android-activity,surfaceview,Android,Android Activity,Surfaceview,我正在做一个小游戏,有一些问题 这是菜单 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);

我正在做一个小游戏,有一些问题

这是菜单

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传递到活动,并将其设置为结果(菜单活动返回)。 然后通过对话框启动一个xml文件,该对话框将是游戏的屏幕,玩家只要点击后退按钮,他就会回到菜单,在那里他可以看到自己取得的分数

你能告诉我怎么编码吗

问候
丹尼斯

有很多方法可以解决这个问题:

-使用startActivityForResult,然后从新活动中发回,使用onActivityResult在旧活动中捕获它(选中)

-做我做过的事(懒惰、刻薄的方式:):用startActivity()启动新活动,并将高分作为额外数据添加到意图中。在您的新活动中,使用getIntent().getInt(ow whatever)获取发送的分数数据,并根据需要对其进行处理。然后关闭该活动,您将返回到上一个活动,并持有surfaceview

现在的诀窍是:在你开始你的新活动并将其分数添加到意图之前,只需在你的surfaceview活动中运行与你在新活动中相同的分数计算!这样,当您返回到surfaceview的活动时,您仍将获得正确的新分数(如果存储/恢复正确;不要忘记将其添加到您的保存/恢复状态和/或surfaceview的私有变量)


唯一的缺点是你有两个位置需要更新你的得分机制。而且这不是一个好的编程。但这很有效,也很容易

运行相同的计算并不是必需的糟糕风格,但代码重复是必需的!查找其他源组织。。。