2014-03-25 2 views
0
package net.sourceforge.zbar.android.CameraTest; 

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 


public class WebViewActivity extends Activity { 

    private WebView webView; 

    @SuppressLint("SetJavaScriptEnabled") 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.webview);  
     String mUrl = getIntent().getStringExtra("mUrl"); 
     webView = (WebView) findViewById(R.id.web_engine); 
     webView.setWebViewClient(new MyWebClient()); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.loadUrl(mUrl); 



    } 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if(event.getAction() == KeyEvent.ACTION_DOWN){ 
      switch(keyCode) 
      { 
      case KeyEvent.KEYCODE_BACK: 
       if(webView.canGoBack()){ 
        webView.goBack(); 
       }else{ 
        finish(); 
       } 
       return true; 
      } 

     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 

class MyWebClient extends WebViewClient { 

    @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      // TODO Auto-generated method stub 
      super.onPageStarted(view, url, favicon); 


    } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      // TODO Auto-generated method stub 

      return false; 

     } 


     } 

이 코드에는 진행 대화 상자를 넣으려고했지만 응용 프로그램이 중지되었습니다. 나는 webclient 클래스에 넣었지만, 앱을 실행 한 후에는 진행 대화 상자가 나타 났지만 앱은 멈춘다. 작업 코드를 볼 수 있도록 이미 해당 부분을 삭제했습니다. 내가 어떻게 해?webview, qr 코드 스캐너의 진행 대화 상자

답변

1

레이아웃에는 ProgressBar 개체를 추가해야하지만 숨겨야합니다. 페이지가 로딩을 시작할 때 다음, 당신이 진행 표시 줄을 보여

ProgressBar progress = (ProgressBar) findViewById(R.id.progress); 
progress.setVisibility(View.VISIBLE); 

심지어 마지막 방법에 대한 진행 상황 변화

@Override 
public void onProgressChanged(WebView view, int percentage) { 
    ProgressBar progress = (ProgressBar) findViewById(R.id.progress); 
    progress.setProgress(percentage); 
} 

를 오버라이드 (override) 할 수 있습니다, 당신은 WebChromeClient를 확장해야합니다.