Codenameone 浏览器组件/网络浏览器不';按下“back”(后退)按钮时不能关闭

Codenameone 浏览器组件/网络浏览器不';按下“back”(后退)按钮时不能关闭,codenameone,Codenameone,我正在表单中使用WebBrowser。当我按下后退按钮时,浏览器不会关闭(停留在GUI的顶部),应用程序会一直返回,直到它到达第一个屏幕(我看到标题更改) 另一个可能相关的问题。如果旋转设备(打开浏览器窗体),将显示上一个窗体,浏览器将在其顶部进行渲染 我在安卓5.0上测试了这个,在模拟器中运行良好 public static void showBrowser(String id) { final Form form = new Form("browser"); final We

我正在表单中使用WebBrowser。当我按下后退按钮时,浏览器不会关闭(停留在GUI的顶部),应用程序会一直返回,直到它到达第一个屏幕(我看到标题更改)

另一个可能相关的问题。如果旋转设备(打开浏览器窗体),将显示上一个窗体,浏览器将在其顶部进行渲染

我在安卓5.0上测试了这个,在模拟器中运行良好

public static void showBrowser(String id) {
    final Form form = new Form("browser");
    final WebBrowser browser = new WebBrowser();
    form.setBackCommand(new Command(" ") {
        @Override
        public void actionPerformed(ActionEvent evt) {
            //show another form
            Login.show();
        }
    });
    form.setLayout(new BorderLayout());
    browser.setURL("http://www.google.com");
    form.add(BorderLayout.CENTER, browser);
    form.show();
}
试试这个:

final WebBrowser browser = new WebBrowser();
    form.setBackCommand(new Command(" ") {
        @Override
        public void actionPerformed(ActionEvent evt) {
            browser.destroy();
            //show another form
            Login.show();
        }
    });

我发现这个问题与在显示浏览器表单之前提出请求有关

我有一个方法,使用

NetworkManager.getInstance().addToQueueAndWait(请求)

此请求返回我传递给
showBrowser(字符串id)
的“id”

当我删除此请求时,浏览器工作正常。因此,作为一种解决方法,现在我使用硬编码链接显示浏览器表单,然后在显示表单(
form.show()
)后,我发出请求并使用此链接更新浏览器

browser.setURL()
browser.reload()


我不知道这有什么关系,但它解决了问题。

您是否在Login.show中做了一些特定的操作?这应该隐式关闭。我没有在
Login.show中执行任何特定操作。但是我在展示表格之前做了一些具体的事情。请检查答案。我尝试了
browser.destroy()
browser.remove()
,但得到了相同的行为。我找到了一个解决办法,但原来的问题仍然存在。所以,请检查答案,了解如何重现。这可能与andWait呼叫阻止EDT有关。在这种情况下,请尝试使用AddToQueue而不等待