未调用 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 依赖项,除非您实现它,否则它不会起作用。
我正在使用 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 脚本。
如
同时 Charm 实现了 Charm Down 插件 lifecycle
(见此
由于您没有在 B 中使用 Charm 依赖项,除非您实现它,否则它不会起作用。