JavaFXPorts - 更改场景导致无效触摸点 ID 错误
JavaFXPorts - Changing scene results in Invalid Touch point ID error
我有一个包含 2 个场景的应用。该应用程序从第一个场景(设置为全屏模式)开始,当我点击屏幕上的一个点时,它会切换到第二个场景(也设置为全屏)。
当我 运行 它在 Windows 上时,它工作正常。当我运行它在Android时,切换到第二个场景后出现错误。第二个场景在屏幕上短暂弹出,然后在 logcat 中出现以下异常而崩溃:
java.lang.RuntimeException: Platform reported wrong touch point ID
at javafx.scene.Scene$TouchMap.get(Scene.java:5455)
at javafx.scene.Scene$ScenePeerListener.touchEventNext(Scene.java:2716)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$null1(GlassViewEventHandler.java:1148)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.access$lambda(GlassViewEventHandler.java)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda.run(Unknown Source)
at java.security.AccessController.doPrivileged(AccessController.java:52)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleNextTouchEvent2(GlassViewEventHandler.java:1127)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.access$lambda(GlassViewEventHandler.java)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda.get(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:391)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleNextTouchEvent(GlassViewEventHandler.java:1126)
at com.sun.glass.ui.View.handleNextTouchEvent(View.java:579)
at com.sun.glass.ui.View.notifyNextTouchEvent(View.java:1050)
at com.sun.glass.ui.TouchInputSupport.notifyNextTouchEvent(TouchInputSupport.java:141)
at com.sun.glass.ui.monocle.TouchInput.dispatchPoint(TouchInput.java:131)
at com.sun.glass.ui.monocle.TouchInput.lambda$postPoint(TouchInput.java:155)
at com.sun.glass.ui.monocle.TouchInput.access$lambda(TouchInput.java)
at com.sun.glass.ui.monocle.TouchInput$$Lambda.run(Unknown Source)
at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
at java.lang.Thread.run(Thread.java:818)
任何关于解决这个问题的建议都会很棒。
这是请求的 build.gradle 文件:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.javafxports.jfxmobile'
dependencies {
compile project(':Util')
compile files('D:/DevTools/minimal-json/minimal-json7.jar')
compile files('D:/DevTools/sqlite-jdbc/sqlite-jdbc-3.8.11.2.jar')
androidRuntime 'org.sqldroid:sqldroid:1.0.3'
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.0.8'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
}
mainClassName = 'com.myapp.Client'
jfxmobile {
javafxportsVersion = '8.60.7'
android {
manifest = 'src/android/AndroidManifest.xml'
}
ios {
forceLinkClasses = [ 'com.myapp.**.*', 'SQLite.**.*']
infoPList = file('src/ios/Default-Info.plist')
}
}
谢谢!
我可以重现您的崩溃并提交错误。
虽然在桌面设备上有多个场景甚至阶段是很常见的,但在移动设备上情况并非如此。
相反,我们只有一个舞台,我们不会一直更改场景,只是更改其内容。
使用 Gluon Mobile,有 View
个节点,可以让您准确地做到这一点:根据需要使用尽可能多的视图以获得不同的内容,并在需要时在它们之间切换。
您可以查看 GluonSQLite 示例,其中包含 SQLite 但它只有一个视图,或者查看其他多视图示例here,例如注释或评论。
我有一个包含 2 个场景的应用。该应用程序从第一个场景(设置为全屏模式)开始,当我点击屏幕上的一个点时,它会切换到第二个场景(也设置为全屏)。
当我 运行 它在 Windows 上时,它工作正常。当我运行它在Android时,切换到第二个场景后出现错误。第二个场景在屏幕上短暂弹出,然后在 logcat 中出现以下异常而崩溃:
java.lang.RuntimeException: Platform reported wrong touch point ID
at javafx.scene.Scene$TouchMap.get(Scene.java:5455)
at javafx.scene.Scene$ScenePeerListener.touchEventNext(Scene.java:2716)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$null1(GlassViewEventHandler.java:1148)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.access$lambda(GlassViewEventHandler.java)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda.run(Unknown Source)
at java.security.AccessController.doPrivileged(AccessController.java:52)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleNextTouchEvent2(GlassViewEventHandler.java:1127)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.access$lambda(GlassViewEventHandler.java)
at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda.get(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:391)
at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleNextTouchEvent(GlassViewEventHandler.java:1126)
at com.sun.glass.ui.View.handleNextTouchEvent(View.java:579)
at com.sun.glass.ui.View.notifyNextTouchEvent(View.java:1050)
at com.sun.glass.ui.TouchInputSupport.notifyNextTouchEvent(TouchInputSupport.java:141)
at com.sun.glass.ui.monocle.TouchInput.dispatchPoint(TouchInput.java:131)
at com.sun.glass.ui.monocle.TouchInput.lambda$postPoint(TouchInput.java:155)
at com.sun.glass.ui.monocle.TouchInput.access$lambda(TouchInput.java)
at com.sun.glass.ui.monocle.TouchInput$$Lambda.run(Unknown Source)
at com.sun.glass.ui.monocle.RunnableProcessor.runLoop(RunnableProcessor.java:92)
at com.sun.glass.ui.monocle.RunnableProcessor.run(RunnableProcessor.java:51)
at java.lang.Thread.run(Thread.java:818)
任何关于解决这个问题的建议都会很棒。
这是请求的 build.gradle 文件:
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.javafxports.jfxmobile'
dependencies {
compile project(':Util')
compile files('D:/DevTools/minimal-json/minimal-json7.jar')
compile files('D:/DevTools/sqlite-jdbc/sqlite-jdbc-3.8.11.2.jar')
androidRuntime 'org.sqldroid:sqldroid:1.0.3'
}
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.0.8'
}
}
apply plugin: 'org.javafxports.jfxmobile'
repositories {
jcenter()
}
mainClassName = 'com.myapp.Client'
jfxmobile {
javafxportsVersion = '8.60.7'
android {
manifest = 'src/android/AndroidManifest.xml'
}
ios {
forceLinkClasses = [ 'com.myapp.**.*', 'SQLite.**.*']
infoPList = file('src/ios/Default-Info.plist')
}
}
谢谢!
我可以重现您的崩溃并提交错误。
虽然在桌面设备上有多个场景甚至阶段是很常见的,但在移动设备上情况并非如此。
相反,我们只有一个舞台,我们不会一直更改场景,只是更改其内容。
使用 Gluon Mobile,有 View
个节点,可以让您准确地做到这一点:根据需要使用尽可能多的视图以获得不同的内容,并在需要时在它们之间切换。
您可以查看 GluonSQLite 示例,其中包含 SQLite 但它只有一个视图,或者查看其他多视图示例here,例如注释或评论。