【问题标题】:Android: How do you return from a setContentView?Android:如何从 setContentView 返回?
【发布时间】:2011-09-14 02:08:44
【问题描述】:

例如,当我开始一个新的 Activity 时,我可以使用 finish() 返回上一个 Activity。如何从设置内容视图返回?比如

setContentView(new example(context));

现在我处于我的表面视图。我问的原因是因为目前当我从表面视图按下后退按钮时,它会完全退出游戏。 (我有 super.OnDestroy 的 onDestroy 方法)

我的表面视图有一个 surfaceDestroyed 方法,它将游戏循环线程设置为 false,仅此而已。我假设我需要在这里做一些事情来告诉它将其内容视图切换回我的菜单?

如果我弄错了这些事情的背景或只是听起来很愚蠢,请告知我有关事情如何运作的正确想法。 :D

谢谢!!!

【问题讨论】:

    标签: android view android-activity android-intent


    【解决方案1】:

    您始终处于活动的范围内。因此,即使您正在显示 SurfaceView,该 SurfaceView 也包含在 Activity 中。如果您的应用程序堆栈中的当前活动下方没有活动,则返回按钮将退出您的应用程序。您可以通过在 Activity 中重写 onKeyDown 来显式处理后退按钮以执行您自己的条件逻辑。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            // This is a method I created in my Activity to execute my custom logic
            // related to the user pressing the back button
            return handleBackButton(keyCode, event);
        }
        return super.onKeyDown(keyCode, event);
    }
    

    Activity 中还定义了一个 onBackPressed 方法,但这是在 api 级别 5 中引入的,因此如果您支持 Android 1.6 (api 4),则需要执行 onKeyDown

    【讨论】:

      【解决方案2】:

      最好的方法是使用意图。

      startActivity(new Intent(this, ClassYouWantToReturn.class));
      

      setContentView() 不会有太大帮助,因为您会丢失数据。

      【讨论】:

        【解决方案3】:

        我是新人,只是在学习自己,所以如果我错过了什么,请原谅我。但是你不能使用一个布尔变量来根据它的状态设置内容视图吗?

        Boolean sView
        
        if (sView = true){
        setContentView(new example(context));
        }
        if (sView = false){
        setContentView(new example(context));
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多