Javascript Android WebView下载后在AlertDialog中显示
我目前正在尝试在一个小弹出窗口中显示webview。但是我想先加载视图,然后在适当可用时显示它 所以我试着做了两个函数:Javascript Android WebView下载后在AlertDialog中显示,javascript,android,webview,Javascript,Android,Webview,我目前正在尝试在一个小弹出窗口中显示webview。但是我想先加载视图,然后在适当可用时显示它 所以我试着做了两个函数: public void fetchPopUp(String url, Context appContext) { webView = new WebView(appContext); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(url); } public voi
public void fetchPopUp(String url, Context appContext)
{
webView = new WebView(appContext);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
}
public void displayPopUp(Activity activity)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new AlertDialog.Builder(activity, android.R.style.Theme_Material_Dialog_Alert);
} else {
builder = new AlertDialog.Builder(activity);
}
builder.setView(webView);
AlertDialog dial = builder.show();
webView.addJavascriptInterface(new TCWebAppInterface(dial, webView, activity), "WAIAndroid");
webView.loadUrl("javascript:WAIAndroid.resize(document.body.getBoundingClientRect().height)");
}
至于WAI,请注意:
@JavascriptInterface
public void resize(final float height)
{
activity.runOnUiThread(new Runnable()
{
@Override
public void run()
{
Log.e("JIBA", "sizes\n" + activity.getResources().getDisplayMetrics().widthPixels + "\n" + height + "\n" + activity.getResources().getDisplayMetrics().density + "\n" + activity.getResources().getDisplayMetrics().heightPixels);
});
}
奇怪的是,当我一个接一个地调用fetchPopup和displayppopup时,它工作得很好(除了大小问题,这是调整大小的关键)
但是当我单独调用它们时,弹出窗口显示为空,并且不调用resize方法
我试着显示每一个对象,webview仍然是好的,我试着在加载完成后显示,它被正确调用,我试着重新加载,试着使它不可见或者再次可见,试着用javascript重新加载。当我在fetchPopup
方法之后稍晚调用displayPop
时,它不起作用,这一事实没有改变。我猜在加载url并调用“onPageFinished
”后会出现问题。但我找不到解决这个问题的方法
任何帮助都将不胜感激,我已经没有主意了
非常感谢 尝试移动代码:
webView.addJavascriptInterface(new TCWebAppInterface(dial, webView, activity), "WAIAndroid");
在loadUrl之前添加fetchPopUp函数,如下所示:
public void fetchPopUp(String url, Context appContext){
webView = new WebView(appContext);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new TCWebAppInterface(dial, webView, activity), "WAIAndroid");
webView.loadUrl(url);
}
奇怪的是,像这样,resize根本就没有被调用过。我的错,我在代码中犯了错误,但事实上,像这样,resize确实被正确地调用了。(但是在调用displaypopup函数之后弹出窗口仍然不会显示webview)只要我可以手动调整大小,我就必须找到如何动态调整大小。非常感谢:)