首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表面视图,活动,开始活动结果的活动,活动中的对话

表面视图,活动,开始活动结果的活动,活动中的对话
EN

Stack Overflow用户
提问于 2012-04-19 01:18:53
回答 1查看 649关注 0票数 1

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

这是菜单

代码语言:javascript
复制
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; }

然后启动一个表面视图的活动

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(new GameView(this));
}

然后是带有游戏机制的surfaceView。

我的大部分代码都在这个视图中。

现在我的问题是为游戏屏幕找到一个好的解决方案。

如果我在表面视图中开始一个新的活动,它可以工作--但是我得不到result(),这是在一个会话中获得的分数。

所以现在我想问你们如何解决这个问题。

我想了一个办法,但不知道如何实现它。这将是将高分从表面视图传递给活动,并将其设置为(菜单活动返回的)结果。并通过对话框启动xml文件,这将是游戏屏幕,一旦玩家触摸后退按钮,他就会返回到菜单,在那里他可以看到他所取得的成绩。

你能告诉我怎么编码吗?

Kind问候Denis

EN

回答 1

Stack Overflow用户

发布于 2012-04-26 07:08:28

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

-use startActivityForResult,然后从您的新活动中发送回来,使用onActivityResult在旧活动中捕获它(检查https://developer.android.com/reference/android/app/Activity.html)

-do我所做的(懒惰的方式:):使用startActivity()启动新的活动,并将高分作为额外数据添加到意图中。在您的新活动中,使用getIntent().getInt (随便什么)来获取发送的分数数据,并随心所欲地处理它。然后关闭该活动,您将返回到前一个持有您的表面视图的活动。

现在的诀窍是:在你开始新的活动之前,将它的分数添加到意图中,只需在表面视图的活动中运行与在新活动中相同的分数计算!如此一来,当你返回到surfaceview的活动状态时,你仍然会有正确的,新的分数(如果存储/恢复是正确的;不要忘了把它添加到你的保存/恢复状态和/或表面视图的私有变量中)!

唯一的缺点是,你将有两个地方,你必须更新你的评分机制。这不是一个好的编程。但它是有效的,而且很容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10214538

复制
相关文章

相似问题

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