WebView 空白页:如何解决?
WebView blank page : How to fix it?
我有一个问题,我花了太多时间来解决它而没有任何解决方案来解决它。
我想在网络视图中打开 link。
我的 logcat 和 运行 选项卡显示网站已正确加载,但我的网页视图仍为空白。
这是我的代码
public class WebviewFragment extends AppCompatActivity {
@BindView(R.id.webview)
WebView webView;
private String newString;
private String key = "KEY";
Activity activity;
Context mContext;
private ProgressDialog progDailog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview_fragment);
activity = this;
progDailog = ProgressDialog.show(activity, "Loading", "Please wait...", true);
progDailog.setCancelable(false);
webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setCacheMode( 10 * 1024 * 1024 );
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setAppCachePath(activity.getCacheDir().getPath());
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setLoadsImagesAutomatically(true);
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if (extras == null) {
newString = null;
} else {
newString = extras.getString(key);
}
} else {
newString = (String) savedInstanceState.getSerializable(key);
}
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
progDailog.show();
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
progDailog.dismiss();
}
});
webView.loadUrl(newString);
}
}
newString 是好的 link。
我的 "logcat" 选项卡没有错误,我的 "run" 选项卡也没有错误。
但是我无法解决这个问题。
如果您有任何建议,请告诉我。
您将 URL 加载到从未添加到屏幕的 WebView 中:
webView = new WebView(this);
而且您永远不会在布局中显示它。
如果您的布局中有 WebView
,您可能希望将其用作
webView = findViewById(R.id.<something>);
而不是
webView = new WebView(this);
嘿,你好像在用 Butterknife,忘了打电话给
Butterknife.bind(this);
因为此调用会将 Butterknife 绑定到 webview。
我有一个问题,我花了太多时间来解决它而没有任何解决方案来解决它。 我想在网络视图中打开 link。 我的 logcat 和 运行 选项卡显示网站已正确加载,但我的网页视图仍为空白。
这是我的代码
public class WebviewFragment extends AppCompatActivity {
@BindView(R.id.webview)
WebView webView;
private String newString;
private String key = "KEY";
Activity activity;
Context mContext;
private ProgressDialog progDailog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview_fragment);
activity = this;
progDailog = ProgressDialog.show(activity, "Loading", "Please wait...", true);
progDailog.setCancelable(false);
webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setCacheMode( 10 * 1024 * 1024 );
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAppCacheEnabled(true);
webView.getSettings().setAppCachePath(activity.getCacheDir().getPath());
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setLoadsImagesAutomatically(true);
if (savedInstanceState == null) {
Bundle extras = getIntent().getExtras();
if (extras == null) {
newString = null;
} else {
newString = extras.getString(key);
}
} else {
newString = (String) savedInstanceState.getSerializable(key);
}
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
progDailog.show();
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
progDailog.dismiss();
}
});
webView.loadUrl(newString);
}
}
newString 是好的 link。 我的 "logcat" 选项卡没有错误,我的 "run" 选项卡也没有错误。 但是我无法解决这个问题。
如果您有任何建议,请告诉我。
您将 URL 加载到从未添加到屏幕的 WebView 中:
webView = new WebView(this);
而且您永远不会在布局中显示它。
如果您的布局中有 WebView
,您可能希望将其用作
webView = findViewById(R.id.<something>);
而不是
webView = new WebView(this);
嘿,你好像在用 Butterknife,忘了打电话给
Butterknife.bind(this);
因为此调用会将 Butterknife 绑定到 webview。