从android活动调用javascript函数
我想从android活动中调用javascript函数,但它似乎不起作用。 我使用过android webview函数webview.loadUrl(“javascript:function()”); 这是我的android代码:从android活动调用javascript函数,javascript,android,html,Javascript,Android,Html,我想从android活动中调用javascript函数,但它似乎不起作用。 我使用过android webview函数webview.loadUrl(“javascript:function()”); 这是我的android代码: package com.example.web; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.webkit.WebVi
package com.example.web;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebView;
public class MainActivity extends Activity {
WebView webview;
int i=30;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = (WebView)findViewById(R.id.webView1);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("file:///android_asset/index.html");
webview.loadUrl("javascript:change(i)");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
这是我的html代码:
<html>
<body>
<div id="texta">text</div>
<script>
function change(num){
document.getElementById("texta").innerHTML=num;
}
</script>
</body>
</html>
文本
函数更改(num){
document.getElementById(“texta”).innerHTML=num;
}
在您尝试执行javascript时,您的页面可能尚未完全加载。你能试试吗
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
view.loadUrl("javascript:change(i)");
}
});
尝试:
试试看:
String URL = "file:///android_asset/filename.html";
webviewBrowser=(WebView)findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebViewClient(new WebViewClient(webview.loadUrl(URL));
尝试更改此设置:
webview.loadUrl("javascript:change(i)");
对此
webview.loadUrl("javascript:change(" + i +")");
按照您的编写方式,“i”不是java代码中的变量“i”,而是一个名为“i”的字符串。什么是“i”,如果“i”是一个数字,请指定数字,如果“i”是一个字符,请将其括在双引号中,您正在调用一些参数的方法,请更正错误。尝试
loadUrl(“javascript:change(\“”+i\”)
我想这可能是我的问题。我现在就尝试一下,我尝试在不传递任何参数的情况下使用该函数,并在javascript部分手动设置值,效果很好。但是当我把变量i传递给函数时,它就不起作用了,这对我来说是有效的。谢谢虽然我认为每次加载页面时都会调用该函数,即使是对于不同的URL,比如我单击搜索结果,但无论页面是否存在,在加载页面时都会再次调用该函数。要解决此问题,您可以使用if或switch语句根据url字符串调用javascript函数。请充实您的答案。编辑答案,检查:)您没有非常努力。请解释为什么您建议您建议的答案。您在问题和“我的答案”处的代码中没有看到任何更改?编程人员很容易看出这个答案的不同之处和原因。还有其他问题吗?
webview.loadUrl("javascript:change(" + i +")");
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Activity MyActivity = this;
text=(EditText)findViewById(R.id.textValue);
Show=(Button)findViewById(R.id.textButton);
webView= (WebView) findViewById(R.id.webView);
getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
Window.PROGRESS_VISIBILITY_ON);
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
MyActivity .setTitle("Loading...");
MyActivity .setProgress(progress * 100);
if (progress == 100)
MyActivity .setTitle("Android Dhina");
}
});
webView.setWebViewClient(new WebViewClient());
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/web.html");
Show.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
webView.loadUrl("javascript:callFromAndroidActivity
(\""+text.getText().toString()+"\")"); }
});