2017-09-05 118 views
-2

我是android studio新手。我的问题是,webview完成加载后,进度条不会停止旋转。加载Webview后隐藏进度条

我自己也尝试这种单

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

但错误没有得到解决

我的第一个片段的Java讲座

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 
    } 

} 

回答

1

你不应该声明里面onPageFinished此行ProgressBar progressbar = (ProgressBar) view.findViewById(R.id.progressBar2); 。您必须声明它里面onCreateView 代码:

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 
} 

这里,你view.findViewById(R.id.progressBar2)指的是你的WebView观点:在没有跟你的进度。

因此,它应该是─

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

检查更新的代码 –

+0

无差错方法不从其超覆盖。 –

0

公共类firstfragment扩展片段{

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

请提供完整的代码。 –

+0

为你更新了代码...它现在应该可以工作... –

+0

亲爱的朋友,它不起作用。同样的问题仍然存在。 –

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

错误仍然存​​在... –

0

试试这个下面的代码,你可以在Web视图和后加载进度,每个数据负载页面加载进度条隐藏

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); 
      } 
     }); 

    } 

布局文件

<?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> 

问我任何查询

+0

在哪里添加?请提供完整的代码。我是新的Android工作室。 –

+0

@SunilBisu在你的'onCreate()'方法中加入这段代码 –

+0

发现错误-1。无法解析符号--tvUrl,2.无法解析符号--URL,3.无法解析符号--tvTitle,以及4.丢失返回语句 –