1. 程式人生 > >WebView第一次載入會白屏,求解決方案

WebView第一次載入會白屏,求解決方案

程式碼如下,我是從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();
}
}