Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串从Java传递到Java脚本函数_Java_Javascript_Android_Jquery_Cordova - Fatal编程技术网

将字符串从Java传递到Java脚本函数

将字符串从Java传递到Java脚本函数,java,javascript,android,jquery,cordova,Java,Javascript,Android,Jquery,Cordova,我是Phone gap和Java脚本的新手。如果有人提供样品或建议,那将非常有帮助 异常:我得到以下异常:未捕获类型错误:对象[Object Object]没有方法“getName” public class ViewerActivity extends DroidGap { private CordovaActivity mGap; private WebView mWebView; WebView mWebView; /** Called when the

我是Phone gap和Java脚本的新手。如果有人提供样品或建议,那将非常有帮助

异常:我得到以下异常:未捕获类型错误:对象[Object Object]没有方法“getName”

public class ViewerActivity extends DroidGap {
    private CordovaActivity mGap;
    private WebView mWebView;

    WebView mWebView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


       mWebView=new WebView(this);
       mWebView.getSettings().setJavaScriptEnabled(true);
       mWebView.addJavascriptInterface(new JavaScriptInterfaceClass (), "jsinterface");
       mWebView.loadUrl("file:///android_asset/www/sample.html");
    }


}
Java脚本接口类:

public class JavaScriptInterfaceClass {
    public WebView mAppView;
    public DroidGap mGap;


public JavaScriptInterfaceClass(DroidGap gap, WebView view) {
    this.mAppView = view;
    this.mGap = gap;

}

public String getName() {


  return "android";
  }
}
HTML:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="css-js/jquery.mobile-1.0a3.min.css" />
    <script src="css-js/jquery-1.5.min.js"></script>
    <script src="css-js/jquery.mobile-1.0a3.min.js"></script>
</head>
<body>

<script>
    function myFunction()
    {
        var name = jsinterface.getName();
        alert("Hello! I am an alert box!"+name);
    }
    </script>
 <input type="button" onclick="myFunction()" value="Show alert box" />
</body>
</html>

函数myFunction()
{
var name=jsinterface.getName();
警报(“你好!我是一个警报框!”+名称);
}

类名错误。正确的答案应该是

mWebView.addJavascriptInterface(new JavaScriptInterfaceClass(), "jsinterface");
                                                       ^

除了在ling的答案中更改类名之外,您还必须在函数前面放一行

@Javascriptinterface 公共字符串getName(){ (...) }


这可以防止恶意js代码只拨打可能存在的任何函数

Hi-Ling我也尝试过,但不幸的是,相同的错误未捕获类型错误:Object[Object Object]没有方法“getName”