【问题标题】:surfaceview, activity, startactivityforresult, dialog in activitysurfaceview, 活动, startactivityforresult, 活动中的对话框
【发布时间】:2012-04-30 04:02:32
【问题描述】:

我正在开发一个小游戏,但遇到了一些问题。

有菜单

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 中开始一个新活动,它会起作用 - 但我没有得到 result(),它是会话期间获得的分数。

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

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

你能告诉我如何编码吗?

亲切的问候 丹尼斯

【问题讨论】:

    标签: android android-activity surfaceview


    【解决方案1】:

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

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

    -做我做的事情(懒惰,hacky方式:):使用startActivity()启动新活动并将高分作为添加到意图的额外数据添加。在您的新活动中,使用 getIntent().getInt (ow 不管什么) 来获取发送的分数数据并按照您的意愿进行处理。然后关闭该活动,您将返回到前一个活动并持有您的表面视图。

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

    唯一的缺点是您必须在两个位置更新您的得分机制。这不是好的编程。但它有效而且很容易。

    【讨论】:

    • 运行相同的计算不一定是坏风格,但代码重复是!查找其他来源组织...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多