【问题标题】:Codename One: BrowserComponent and WebBrowser does not work on real Android device代号一:BrowserComponent 和 WebBrowser 在真正的 Android 设备上不起作用
【发布时间】:2017-09-15 12:58:09
【问题描述】:

我正在尝试使用 Codename One 加载 WebView,但它无法在真正的 Android 设备上运行尽管它在 Codename One 模拟器中工作 - 页面已加载)。

我已经尝试过 BrowserComponent 和 WebBrowser 都没有工作。代码是:

public class WebViewScreenOpR implements Runnable {

private String urlString;

public WebViewScreenOpR(String urlString) {
    super();
    this.urlString = urlString;
}

private Form webViewForm;

private void prepareAsWebBrowser() {
    WebBrowser webBrowser = new WebBrowser(urlString);
    webViewForm = new Form("Starlent", new BoxLayout(BoxLayout.Y_AXIS));
    webViewForm.add(webBrowser);
}

private void prepareAsBrowserComponent() {
    webViewForm = new Form("Starlent", new BoxLayout(BoxLayout.Y_AXIS));
    BrowserComponent browserComponent = new BrowserComponent();
    browserComponent.setURL(urlString);
    webViewForm.add(browserComponent);
}

@Override
public void run() {
    prepareAsBrowserComponent();
    show();
}

private void show() {
    webViewForm.show();
}

并显示它:

private class GoLiveButtonActionListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent evt) {
        WebViewScreenOpR webViewScreenOpR = new WebViewScreenOpR("http://www.apple.com");
        Display.getInstance().callSerially(webViewScreenOpR);
    }
}

我也尝试过“reload()”和“setEnabled(true/false)”方法,但无济于事。

在使用真正的 Android 设备进行测试时,它会短暂显示一个进度对话框,其中包含文本“正在加载...”。对话框随即消失,什么也没有出现。我的代码有什么问题?如何让它在真正的 Android 中运行?

【问题讨论】:

  • 我不确定这是否与问题有关:文档说“在 Android 上,此组件可能会显示本机进度指示器对话框。您可以使用调用禁用该功能。”。但是,我找不到任何关于如何禁用它的说明。什么“呼唤”?

标签: codenameone


【解决方案1】:

尝试使用 BorderLayout 中心而不是您的 boxlayout,浏览器的初始大小可能只是 0 高度

【讨论】:

  • 好吧,结果是一样的——不过,在真正的 Android 设备中什么也没有出现。我试过: webViewForm = new Form("Starlent", new BorderLayout());和 webViewForm.add(BorderLayout.CENTER, webBrowser);。我也试过“webBrowser.setHeight(300);”和“webViewForm.setHeight(400);”
  • 隐式设置高度几乎总是一个错误。
  • 刚刚在我的安卓设备上尝试了你的代码:private void prepareAsWebBrowser() { WebBrowser webBrowser = new WebBrowser(urlString); webViewForm = new Form("Starlent", new BorderLayout()); webViewForm.add(BorderLayout.CENTER, webBrowser);并且效果很好
猜你喜欢
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多