我在 a 中显示了一个本地 html 文件,WebView
它是 Glisten 的中心节点View
。当我按下 android 后退按钮时,应用程序不会返回上一个视图,而是关闭。当我使用 appBar 按钮切换到上一个视图时,它工作正常。我尝试将事件过滤器附加到 webView 和场景,但它没有被触发。
javafxports 版本:8.60.6
更新:
仅当 webview 聚焦时才会出现此问题。
public class ImportHelpPresenter extends BasePresenter {
@FXML
private WebView web;
@Override
protected void initialize() {
super.initialize();
web.setContextMenuEnabled(false);
loadHelpPage();
}
private void loadHelpPage() {
String htmlContent = null;
try {
htmlContent = readContent("importhelp.html");
} catch (IOException e) {
e.printStackTrace();
}
web.getEngine().loadContent(htmlContent);
}
String readContent(String fileName) throws IOException {
InputStream is = getClass().getResourceAsStream(fileName);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
try {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
line = br.readLine();
}
return sb.toString();
} finally {
br.close();
}
}
EventHandler<? super KeyEvent> backButtonFilter = evt -> {
System.out.println(evt);
if (KeyCode.ESCAPE.equals(evt.getCode())) {
evt.consume();
showPreviousView();
}
};
@Override
protected void onShown() {
super.onShown();
web.getScene().addEventFilter(KeyEvent.ANY, backButtonFilter);
web.addEventFilter(KeyEvent.ANY, backButtonFilter);
}
@Override
protected void onHidden() {
web.getScene().removeEventFilter(KeyEvent.ANY, backButtonFilter);
web.removeEventFilter(KeyEvent.ANY, backButtonFilter);
}
}
日志猫:
04-19 04:49:54.760: V/InternalWebView(11536): WebView added to ViewGroup [x: 0, y: 84 , w: 480 h: 678]
04-19 04:49:54.760: V/InternalWebView(11536): Loading content: <html>
//content omitted
04-19 04:49:54.930: D/webcoreglue(11536): netstack: Memory Cache feature is ON
04-19 04:49:55.070: V/chromium(11536): external/chromium/net/host_resolver_helper/host_resolver_helper.cc:66: [0419/044955:INFO:host_resolver_helper.cc(66)] DNSPreResolver::Init got hostprovider:0x51d36010
04-19 04:49:55.070: V/chromium(11536): external/chromium/net/base/host_resolver_impl.cc:1510: [0419/044955:INFO:host_resolver_impl.cc(1510)] HostResolverImpl::SetPreresolver preresolver:0x51d25d10
04-19 04:49:55.070: D/HostStatisticManager(11536): netstack: DNS Host Prioritization is: ON, Version: 5.0.1
04-19 04:49:55.080: D/(11536): external/chromium/net/socket/tcp_fin_aggregation_factory.cc: libtcpfinaggr.so successfully loaded
04-19 04:49:55.080: D/(11536): external/chromium/net/socket/tcp_fin_aggregation_factory.cc,: TCP Fin Aggregation initializing method was found in libtcpfinaggr.so
04-19 04:49:55.080: D/TCPFinAggregation(11536): netstack: TCPFinAggregation is 1, Version 5.0.1
04-19 04:49:55.080: D/TCPFinAggregation(11536): system property net.tcp.fin.aggregation.wait was set, value: 20
04-19 04:49:55.080: D/TCPFinAggregation(11536): system property net.tcp.fin.aggregation.close was set, value: 300
04-19 04:49:55.080: D/TCPFinAggregation(11536): netstack: CloseUnusedSockets is ON, (TCPFinAggregation), Version 5.0.1
04-19 04:49:55.080: D/TCPFinAggregation(11536): Failed to get network status! received ret: -2
04-19 04:49:55.080: D/Socket_Pool(11536): netstack: CloseUnusedSockets is ON
04-19 04:49:55.080: D/Socket_Pool(11536): netstack: system net.statistics value: 0
04-19 04:49:55.080: D/Socket_Pool(11536): netstack: CloseUnusedSockets is ON
04-19 04:49:55.080: D/Socket_Pool(11536): netstack: system net.statistics value: 0
04-19 04:49:55.090: D/(11536): external/chromium/net/http/http_getzip_factory.cc: libgetzip.so successfully loaded
04-19 04:49:55.090: D/(11536): external/chromium/net/http/http_getzip_factory.cc,: GETzip initializing method was found in libgetzip.so
04-19 04:49:55.090: D/netstack(11536): netstack: Request Priority is ON
04-19 04:49:55.090: D/(11536): netstack: Getzip is: ON, Version: 5.0.1
04-19 04:49:55.180: D/WebKit(11536): ERROR:
04-19 04:49:55.180: D/WebKit(11536): alias gb18030 maps to GB18030 already, but someone is trying to make it map to GBK
04-19 04:49:55.180: D/WebKit(11536): external/webkit/Source/WebCore/platform/text/TextEncodingRegistry.cpp(152) : void WebCore::checkExistingName(char const*, char const*)
04-19 04:50:00.120: E/dalvikvm(11536): GC_CONCURRENT freed 1207K, 24% free 17251K/22599K, paused 5ms+7ms, total 350ms
04-19 04:50:02.810: D/AudioManager(11536): currentDeviceType = 1
04-19 04:50:02.870: V/FXActivity(11536): onPause
04-19 04:50:03.690: W/IInputConnectionWrapper(11536): showStatusIcon on inactive InputConnection
04-19 04:50:03.770: V/FXEntity(11536): Called Surface destroyed
04-19 04:50:03.780: V/FXActivity native(11536): [JVDBG] SURFACE created native android window at 0x0, surface = 0x0
04-19 04:50:03.790: I/GLASS(11536): Native code is notified that surface has changed (repaintall)!
04-19 04:50:04.210: W/ManagedEGLContext(11536): doTerminate failed: EGL count is 2 but managed count is 1
04-19 04:50:04.210: V/FXActivity(11536): onStop
04-19 04:50:04.210: V/FXActivity(11536): onDestroy