Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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
Javascript Android WebView下载后在AlertDialog中显示_Javascript_Android_Webview - Fatal编程技术网

Javascript Android WebView下载后在AlertDialog中显示

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

我目前正在尝试在一个小弹出窗口中显示webview。但是我想先加载视图,然后在适当可用时显示它

所以我试着做了两个函数:

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)只要我可以手动调整大小,我就必须找到如何动态调整大小。非常感谢:)