Как заставить индикатор выполнения исчезнуть после загрузки веб-просмотра? - PullRequest
0 голосов
/ 18 января 2019

Я разрабатываю WebView для моего проекта. Я использовал WebView с индикатором выполнения. Индикатор выполнения загружается правильно при загрузке WebView. После загрузки страницы индикатор выполнения не исчезает. Как сделать так, чтобы его видимость исчезла.

Я поделюсь кодом. Я создал веб-просмотр с индикатором выполнения.

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String url = "https://rnbazar.com/";
    setContentView(R.layout.activity_main);
    final WebView myWebView = (WebView) findViewById(R.id.webview);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    //myWebView.setWebViewClient(new WebViewClient());
    myWebView.getSettings().setUseWideViewPort(true);
    myWebView.getSettings().setLoadWithOverviewMode(true);
    myWebView.loadUrl(url);
    myWebView.setWebViewClient(new MyWebViewClient());

    myWebView.setWebViewClient(new WebViewClient() {
      @Override public void onReceivedError(WebView view, int errorCode,
        String description, String failingUrl) {
        myWebView.loadUrl("file:///android_asset/error.html");
      }
    });
  }

  private class MyWebViewClient extends WebViewClient {
    @Override
    public void onPageStarted(final WebView myWebView, final String url,
      final Bitmap favicon) {
      ProgressBar bar = (ProgressBar)
      myWebView.findViewById(R.id.progressBar);

      bar.setVisibility(View.VISIBLE);
      super.onPageStarted(myWebView, url, favicon);

    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView myWebView, String url) {

      myWebView.loadUrl(url);
      return true;
    }

    @Override
    public void onPageFinished(WebView myWebView, String url) {
      ProgressBar bar = (ProgressBar)
      myWebView.findViewById(R.id.progressBar);
      super.onPageFinished(myWebView, url);
      bar.setVisibility(View.GONE);
    }

  }
}

Я хочу, чтобы индикатор загрузки исчезал после загрузки страницы. если я нажимаю любую ссылку снова, загрузчик приходит и снова исчезает после загрузки страницы.

1 Ответ

0 голосов
/ 18 января 2019

a WebView может с большой вероятностью не содержать R.id.progressBar ...

public class MainActivity extends Activity {

    private WebView mWebView = null;
    private Progressbar mProgressbar = null;
    private String url = "https://rnbazar.com/";

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_main);

        this.mWebView = (WebView) findViewById(R.id.webview);
        this.mProgressbar = (Progressbar) findViewById(R.id.progressBar);
    }
    ...

и затем вы можете использовать эту ссылку:

private class MyWebViewClient extends WebViewClient {

    @Override
    public void onPageStarted(WebView webView, String url,  Bitmap favicon) {
        super.onPageStarted(webView, url, favicon);
        mProgressbar.setVisibility(View.VISIBLE);
    }

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

    @Override
    public void onPageFinished(WebView webView, String url) {
        super.onPageFinished(webView, url);
        mProgressbar.setVisibility(View.GONE);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...