0

我想知道:-

在我的项目中,我使用 html 内容并在 android webview 中显示它们。我正在使用eclipse ide。这是很小的代码。

"<form name =\"frm\">"+
                                                "<input type=\"checkbox\" name =\"First\" value =\"xyz\">xyz<br>"+
                                                "<input type=\"checkbox\" name =\"First\" value =\"abc\">abc<br>"+ 
                                               "</form>" 

我的问题是我怎样才能获得复选框状态。它被选中或未选中。

或者我如何在我的 java 代码中捕获状态。

更新:-

 public String html =  "<form name =\"frm\">"+
                                                    "<input type=\"checkbox\" name =\"First\" value =\"xyz\">as<br>"+
                                                    "<input type=\"checkbox\" name =\"Second\" value =\"zyx\">as<br>"+ 
                                                    "<input type =\"button\" onclick =\"callDoSomething()\"><br>"+
                                                    "</form>" +


                                                    "<script type=\"text/javascript\">"+
                                                    "function callDoSomething() {"+
                                                    " var theName = document.frm.First.value;"+
                                                    "alert('theName ')"+
                                                    "}"+
                                                    "</script>";
4

1 回答 1

0

首先,您的两个复选框都命名为“First”,您可能应该将第二个复选框命名为“Second”。如果您想按值搜索复选框 - 只需添加一个简单的 js for 循环。

假设您想从您的 Android 代码中获取结果(而不是像单击按钮这样的 JS 事件),以下是您如何按名称为您的复选框获取 Java 布尔值:

// assuming your activity is MyActivity, target checkbox name
// is in the targetCheckboxName var and webView has the document
// loaded already
Object jsi = new Object() {
    @JavascriptInterface
    public String reportCheckboxState(String name, boolean isChecked) {
        new AlertDialog.Builder(MyActivity.this).setMessage(name + " is " +
                isChecked).create().show();
    }
};
webView.addJavascriptInterface(jsi, "injection");
webView.loadUrl(
    "javascript:injection.reportCheckboxState(frm." + targetCheckboxName +
    ".name, frm." + targetCheckboxName + ".checked);"
);

但实际上,这是一个非常简单的技巧。从对该问题的评论来看,您可能应该阅读 JavaScript 和WebView.addJavaScriptInterface()

于 2013-02-25T06:16:44.567 回答