2013-05-31 2 views
10

빈 백 화면이 없도록 페이지가 웹뷰에서로드 될 때 진행 대화 상자를 내 앱에 통합하려고했습니다. 나는이 질문이 사방에 게시된다는 것을 알고 있지만, 나를 위해 효과가있는 것을 알아낼 수는 없다고 생각합니다. 프로그래밍에 익숙하지 않고 android와 협력하여 어떤 정보라도 도움이 될 것입니다. 아래는 현재 현재 가지고있는 코드입니다. onPageStarted를 사용하면 Bitmap에 대한 컴파일 오류가 발생하며 문제가 무엇인지 잘 모릅니다. 감사.웹보기에서 진행 대화 상자 추가하기

public class Grades extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 


    //requesting system settings 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().requestFeature(Window.FEATURE_PROGRESS); 
    WebView webview = new WebView(this); 

    //web settings 

    WebSettings webSettings = webview.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setDisplayZoomControls(true); 
     webSettings.setBuiltInZoomControls(true); 


    setContentView(webview); 

    //loads webpages in webview instead of launching browser 

    webview.setWebViewClient(new WebViewClient() { 
      ProgressDialog prDialog; 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       prDialog = ProgressDialog.show(Grades.this, null, "loading, please wait..."); 
       super.onPageStarted(view, url, favicon); 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       prDialog.dismiss(); 
       super.onPageFinished(view, url); 
      } 
     }); 

    //loading webpage 
    webview.loadUrl("page__link"); 
} 
+0

어떤 오류가 있습니까? – Oam

+0

지금 오류는 대화 상자가 나타난 후 페이지가로드되면 사라지지 않는다는 것입니다. – bigC5012

+1

방법으로 빌드를 사용하십시오, 참조 http://stackoverflow.com/a/31826829/3496570 – Nepster

답변

27

확인이 코드 뒤에 무엇 나를 위해 작업 진행 대화 상자와

final ProgressDialog pd = ProgressDialog.show(OnlinePaymentActivity.this, "", "Please wait, your transaction is being processed...", true); 

      mWebview = (WebView)findViewById(R.id.webView1); 

       mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript 

       mWebview.getSettings().setLoadWithOverviewMode(true); 
       mWebview.getSettings().setUseWideViewPort(true); 
       mWebview.getSettings().setBuiltInZoomControls(true); 


       mWebview.setWebViewClient(new WebViewClient() { 
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
         Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
        } 

        @Override 
        public void onPageStarted(WebView view, String url, Bitmap favicon) 
        { 
         pd.show(); 
        } 


        @Override 
        public void onPageFinished(WebView view, String url) { 
         pd.dismiss(); 

          String webUrl = mWebview.getUrl(); 

          } 

} 

        }); 

       mWebview .loadUrl("www.google.com"); 
+1

답변에 감사드립니다. 모든 것이 훌륭하게 작동합니다! – bigC5012

0

하는이 시도하고 나는 희망이, 당신은

webview.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) { 
      //Also you can show the progress percentage using integer value 'progress' 
      if(!prDialog.isShowing()){ 
      prDialog = ProgressDialog.show(Grades.this, null, "loading, please wait..."); 
      } 


      if (progress == 100&&prDialog.isShowing()) { 
       prDialog.dismiss(); 
      } 
     } 
    }); 
+0

나를 위해 Doesnot 작동합니다. –

+0

우리는 WebView를 사용하여 크롬 브라우저로 이동하지 않고 웹 페이지를로드합니다. 이것은 잘못된 접근입니다. –

3

웹보기. 전체 작업 코드

import android.app.ProgressDialog; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

import com.yubrajpoudel.R; 

/** 
* Created by yubraj on 12/25/15. 
*/ 
public class NewsActivity extends AppCompatActivity { 
    private WebView webView; 
    ProgressDialog prDialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.page_news); 
     setSupportActionBar((Toolbar) findViewById(R.id.toolbar)); 

     webView = (WebView) findViewById(R.id.wv_news); 
     webView.setWebViewClient(new MyWebViewClient()); 

     String url = "http://google.com/"; 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); 
     webView.loadUrl(url); 


    } 

    private class MyWebViewClient extends WebViewClient { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      prDialog = new ProgressDialog(NewsActivity.this); 
      prDialog.setMessage("Please wait ..."); 
      prDialog.show(); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      if(prDialog!=null){ 
       prDialog.dismiss(); 
      } 
     } 
    } 
}