2017-09-05 2 views
-2

Je suis nouveau sur android studio. Mon problème est que la barre de progression n'arrête pas de tourner après le chargement du webview.Masquer la barre de progression après le chargement de Webview

J'ai aussi essayé avec le PrimaLuna

progressbar.setVisibility(View.VISIBLE); //to show 
     progressbar.setVisibility(View.GONE); // to hide 

Mais l'erreur pas résolu

Mon premier fragment Java Class-

import android.app.AlertDialog; 
import android.app.Fragment; 
import android.content.DialogInterface; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 

import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 


public class firstfragment extends Fragment{ 

    public WebView mywebview2; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.first_layout, container, false); 
     mywebview2 = (WebView) v.findViewById(R.id.WebView); 
     mywebview2.loadUrl("https://m.youtube.com"); 
     mywebview2.setWebViewClient(new WebViewClient()); 

     // Enable Javascript 
     WebSettings webSettings = mywebview2.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     AdView mAdView = (AdView) v.findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     mAdView.loadAd(adRequest); 
     return v; 
    } 

    public void onPageFinished(WebView view,String url){ 
     ProgressBar progressbar = (ProgressBar) view.findViewById(R.id.progressBar2); 
     progressbar.setVisibility(View.VISIBLE); //to show 
     progressbar.setVisibility(View.GONE); // to hide 
    } 

} 

Répondre

1

Vous ne devez pas déclarer cette ligne à l'intérieur ProgressBar progressbar = (ProgressBar) view.findViewById(R.id.progressBar2);onPageFinished . vous devez déclarer à l'intérieur onCreateView votre code:

public void onPageFinished(WebView view,String url){ 
    ProgressBar progressbar = (ProgressBar) view.findViewById(R.id.progressBar2); 
    progressbar.setVisibility(View.VISIBLE); //to show 
    progressbar.setVisibility(View.GONE); // to hide 
} 

ici, votre view.findViewById(R.id.progressBar2) fait référence à votre vue WebView qui n'a rien à voir avec votre barre de progression.

Il devrait être-

private ProgressBar progressbar; 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 

    View v = inflater.inflate(R.layout.first_layout, container, false); 
    mywebview2 = (WebView) v.findViewById(R.id.WebView); 


    //here 
    progressbar = (ProgressBar) v.findViewById(R.id.progressBar2); 
    // Enable Javascript 
    WebSettings webSettings = mywebview2.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 
    AdView mAdView = (AdView) v.findViewById(R.id.adView); 
    AdRequest adRequest = new AdRequest.Builder().build(); 
    mAdView.loadAd(adRequest); 
    myWebView2.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageStarted(WebView view, String url) { 

     progressbar.setVisibility(View.VISIBLE); 
return true; 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 

     progressbar.setVisibility(View.GONE); 
return true; 
    } 
}); 
mywebview2.loadUrl("https://m.youtube.com"); 
    return v; 
} 
+0

.. –

+0

vérifier le code mis à jour –

+0

Méthode ERROR- ne remplace pas de sa superclasse. –

0

firstfragment public class étend Fragment {

public WebView mywebview2; 
    private ProgressBar progressbar; 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.first_layout, container, false); 
     mywebview2 = (WebView) v.findViewById(R.id.WebView); 
     mywebview2.setWebViewClient(new WebViewClient()); 
     progressbar = (ProgressBar) view.findViewById(R.id.progressBar2); 

     // Enable Javascript 
     WebSettings webSettings = mywebview2.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     mywebview2.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       super.onPageStarted(view, url, favicon); 
       progressbar.setVisibility(View.VISIBLE); 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       super.onPageFinished(view, url); 
       progressbar.setVisibility(View.GONE); 
      } 
     }); 
     mywebview2.loadUrl("https://m.youtube.com"); 
     AdView mAdView = (AdView) v.findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     mAdView.loadAd(adRequest); 
     return v; 
    } 
} 
+0

s'il vous plaît suggérer le code complet. –

+0

mis à jour le code pour vous ... il devrait fonctionner maintenant ... –

+0

Cher ami cela ne fonctionne pas. Le même problème persiste toujours. –

0
@Override 
public void onPageFinished(WebView view, String url) 
{ 
    super.onPageFinished(view, url); 
    progressBar.setVisibility(view.GONE); 
} 
+0

Erreur toujours persister ... –

0

essayer avec ci-dessous le code que vous pouvez charger progrès par chargement de données en mode Web et après chargement de la page barre de progression masquer

String url = ""; 
    webView = (WebView) findViewById(R.id.web); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setSupportZoom(true); 
     webView.getSettings().setBuiltInZoomControls(true); 
     webView.loadUrl(url); 
     progressBar = (ProgressBar) findViewById(R.id.progressbar); 


     progressBar.setMax(100); 
     progressBar.setProgress(1); 


     webView.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) { 
       progressBar.setProgress(progress); 
      } 
     }); 
webView.setWebViewClient(new WebViewClient() { 

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


      } 



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

      @Override 
      public void onPageFinished(WebView view, String url) { 
//    progressDialog.hide(); 
       progressBar.setVisibility(View.GONE); 
      } 
     }); 

    } 

fichier de mise en page

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/activity_web_view" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <WebView 
     android:id="@+id/web" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

    <ProgressBar 
     android:layout_marginTop="-7dp" 
     android:id="@+id/progressbar" 
     style="?android:attr/progressBarStyleHorizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:background="@android:color/transparent" 
     android:indeterminate="false" 
     android:max="100" 
     android:progress="1" 
     android:theme="@style/ProgressbarTheme" /> 

</RelativeLayout> 

me demander en cas de problème persiste encore requête

+0

où ajouter ceci? veuillez suggérer le code complet. Je suis nouveau sur studio android. –

+0

@SunilBisu ajoute ce code dans votre méthode 'onCreate()' –

+0

Erreur trouvée -1. Impossible de résoudre le symbole - tvUrl, 2.Notre symbole de résolution - url, 3.Notre symbole de résolution - tvTitle, et 4. Déclaration de retour manquante –