我目前正在尝试在小弹出窗口中显示webview。但我想首先加载视图,然后在适当的时候显示它。
所以我试图做的是2个功能:
Special
至于WAIAndroid调整大小:
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)");
}
奇怪的事情是当我一个接一个地调用fetchPopup和displayPopup时,它工作得很好(除了大小问题,这是调整大小的点)。
但是当我单独调用它们时,弹出窗口显示为空,并且不调用resize方法。
我试图显示每个对象,webview仍然是好的,我尝试显示它完成加载,它被正确调用,我尝试重新加载,试图使其不可见或者再次可见,尝试重新加载javascript。没有什么能改变这样一个事实:当我在@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);
});
}
方法之后稍晚调用displayPop
时,它不起作用。我猜想在加载url并调用“fetchPopup
”后会出现问题。但是我找不到如何解决这个问题。
任何帮助都会非常感激,我的想法已经用完了!
非常感谢!
答案 0 :(得分:1)
尝试移动您的代码:
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);
}