WebView第一次載入會白屏,求解決方案
阿新 • • 發佈:2019-01-07
程式碼如下,我是從MainActivity點選按鈕跳轉進去這個頁面的,第一次載入時進度條完成後顯示不出來頁面,必須按返回鍵後再次載入才能顯示出來,搞了半天了都不知道什麼原因,求大神幫忙解決啊,煩死了!!
public class AnnounceActivity extends BaseActivity{
private static final int PROGRESS_ID = 0;
private ProgressDialog progressBar=null;
private AlumniApp app;
private WebView webView=null;
Button aBackButton;
private static final String url = "http://m.alumni.ecnu.edu.cn/alumni/pages/indexs_noheader#notice";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = (AlumniApp) getApplication();
setContentView(R.layout.announce_layout);
aBackButton = (Button) this.findViewById(R.id.announce_back_btn);
Button freshButton = (Button) this.findViewById(R.id.announce_fresh_btn);
webView = (WebView) this.findViewById(R.id.webview);
freshButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
webView.goBack();
}
});
aBackButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent aIntent = new Intent(getApplicationContext(), MainActivity.class);
aIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(aIntent);
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(false);
webView.getSettings().setPluginsEnabled(true);
//// webView.getSettings().setPluginState(PluginState.ON);
//
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
// //解決報Cannot call method 'getItem' of null at XXXX/build.js:6等錯問題
webView.getSettings().setDomStorageEnabled(true);
// webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
progressBar = new ProgressDialog(this);
progressBar.setTitle("頁面載入中,請稍候...");
progressBar.setMessage("Loading...");
// progressBar=ProgressDialog.show(this, "頁面載入中,請稍候...", "Loading...");
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
progressBar.show();
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
if (progressBar.isShowing()) {
progressBar.dismiss();
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
//錯誤處理,彈出對話方塊顯示
}
});
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
progressBar.setProgress(newProgress);
progressBar.setMessage("Loading..." + newProgress + "%");
super.onProgressChanged(view, newProgress);
}
});
loadUrl(url);
}
public void loadUrl(String url)
{
if(webView != null)
{
webView.loadUrl(url);
// progressBar=ProgressDialog.show(this, "頁面載入中,請稍候...", "Loading...");
}
}
@Override
protected Dialog onCreateDialog(int id) {
if(id==PROGRESS_ID){
return ProgressDialog.show(this, null, "載入中,請稍後......");
}
return super.onCreateDialog(id);
}
@Override
protected void onResume() {
app.isStartSensor();
super.onResume();
}
@Override
protected void onPause() {
app.isStopSensor();
super.onPause();
}
}