【问题标题】:Codenameone: How to prevent the android hardware-back-button to exit the app?Codenameone:如何防止android硬件后退按钮退出应用程序?
【发布时间】:2017-01-31 17:56:15
【问题描述】:

当我在 Android 设备上运行我的 Codenameone-App 时,按下硬件后退按钮会停止/退出我的应用程序。我在表单中添加了一个 back-Command - 但这不起作用。当我从第一个表单调用第二个表单并在那里按下硬件返回按钮时,硬件返回按钮按预期工作(第二个表单关闭并显示第一个表单)。

如何防止在第一个表单上按下硬件后退按钮时应用退出?

【问题讨论】:

    标签: android hardware codenameone back-button


    【解决方案1】:
      @Override
        public void onBackPressed() {
            // nothing to code
        }
    

    你必须重写 onBackPressed 方法并保持它为空,然后当你从第一个屏幕按下返回按钮时,你的应用程序将不会退出

    【讨论】:

      【解决方案2】:

      调用form.setBackCommand(new Command("")); 以禁用Form 上的默认最小化行为。

      【讨论】:

      • 嗯 - 对不起 - 但是在表单中添加一个空的 Command() 作为 backCommand 并不能阻止应用程序在按下硬件后退按钮时停止。还有什么我可以尝试的吗?另外两位开发人员写道,我应该重写 onBackPressed() - 但我找不到可以重写此方法的类。
      • 您需要在正确的表单实例上执行此操作,您是使用旧的 gui 构建器还是其他东西。其他人在谈论本机 Android,这在此处不适用。
      • 我在 start-class 中创建主窗体(具有 start() 和 init() 方法的窗体)作为实例变量。还有其他表单,它们是从主表单调用/打开的。其他表单有后退命令,与 android 硬件后退按钮一起工作正常(这意味着应用程序没有退出 - 但主表单再次使用 showBack() 打开)。旧的 GUI-Builder 仅用于样式目的。
      • 当他们“返回”时,他们是创建一个新的表单实例还是返回到前一个实例?
      • 他们使用 showBack() 返回到前一个实例
      【解决方案3】:

      您可以覆盖onBackPressed() 来处理后退按钮点击:

      @Override
      public void onBackPressed() {
      }
      

      保持不变,会使您的应用对后退按钮无响应。如果我正确理解了这个问题,那就是你想要达到的目标!

      【讨论】:

      • Codename one 中的哪个类有一个可以被覆盖的 onBackPressed() 方法?
      • 我没有正确理解你的评论,如果你能解释一下就更好了!
      • 重写一个方法意味着,有一个类已经有了这样的方法。但我找不到一个已经有一个名为 onBackPressed() 的方法的类。
      • 对不起 - 但我不明白...我不使用任何 Activity 类。我们是否在谈论 Codenameone 标准应用程序?
      猜你喜欢
      • 2015-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多