未调用 javafxport 的 FxActivity.onBackPressed

javafxport's FxActivity.onBackPressed is not called

我正在使用 javafxports 在 android 上启动基于 gradle 的 javafx 应用程序。使用 jfxmobile-plugin,应用程序被打包到一个 apk 文件中并且运行良好。 为了覆盖 FxActivity 的后退行为,我尝试扩展这个 class 并添加我自己的 Activity class.

public class MyActivity extends FxActivity
{
    @Override
    public void onBackPressed()
    {
        System.out.println("onBackPressed");
        super.onBackPressed();
    }

}

我将 MyActivity class 的完整限定名称添加到 AndroidManifest.xml 并且应用程序再次正常工作,除了当我按下 android 的后退时按钮,我看不到要打印的消息 "onBackPressed"。还有另一条消息显示后退按钮被某些 jfxrt.jar class 或其他东西按下和处理。消息如下所示:

my.sample.package.name  I/System.out(16507): KeyEvent: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x48, repeatCount=0, eventTime=144078131, downTime=144078016, deviceId=-1, source=0x101 } with action = 1

有谁知道如何以这种方式覆盖 onBackPressed 吗? 我的另一个问题是 javafxports 在按下后关闭 javafx 阶段到底做了什么?

编辑:

另一个问题是:

我有两个不同的 javafxports android 应用程序,名称为 G 和 B; 这两个应用程序具有相同的 build.gradle 文件,除了依赖项部分。应用程序 G 有一些依赖关系,例如

dependencies {
compile 'org.reflections:reflections:0.9.10'
compile 'org.dom4j:dom4j:2.0.0'
compile 'com.jfoenix:jfoenix:1.0.0'
compile 'com.gluonhq:charm:2.1.1'
androidRuntime 'com.gluonhq:charm-android:2.1.1'
}

但是应用程序B有很多依赖项,主要是我自己的子项目;但是 B 不依赖于这两个特定的工件

 compile 'com.gluonhq:charm:2.1.1'
 androidRuntime 'com.gluonhq:charm-android:2.1.1'

按下后退键,应用程序 G 按预期退出到 android 主页。但是,应用程序 B 不会对 android 上的后退事件做出反应,尽管在 android 的监视器屏幕上打印了一条类似于我上面提到的消息。

我想知道B为什么忽略后退事件?

首先,您使用的 Gluon Charm 依赖项很旧。当前版本为 4.2.0。我建议您也将 Gluon IDE 插件更新到当前的 2.5.0 版本,因为它将生成一个最新的 build.gradle 脚本。

所示,Android后退按钮映射到ESCAPE键,Charm实现了一个按键事件监听器,因此我们可以切换视图或关闭图层。

同时 Charm 实现了 Charm Down 插件 lifecycle(见此 ),当当前视图为主视图时,按下 Android 后退按钮具有以下效果完成 activity/application.

由于您没有在 B 中使用 Charm 依赖项,除非您实现它,否则它不会起作用。