2017-09-05 7 views
-2

私はアンドロイドスタジオで新規です。私の問題は、Webビューの読み込みが終了した後、進行状況バーが回転を停止しないことです。Webviewの後にプログレスバーを表示しません。

私も、このワン

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

で試してみましたが、エラーがあなたがonPageFinishedの内側に、このラインProgressBar progressbar = (ProgressBar) view.findViewById(R.id.progressBar2);を宣言するべきではありません

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

私の最初のフラグメントのJavaクラス - を解決しません。あなたが 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をBE-すべきはフラグメントを拡張{

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ビューと後のデータロードごとに進捗状況をロードすることができ、コードの下でこれを試してみてくださいページ読み込みプログレスバーhide

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

これをどこに追加しますか?完全なコードを提案してください。私はアンドロイドスタジオで新しいです。 –

+0

@SunilBisuあなたの 'onCreate()'メソッドにこのコードを追加してください –

+0

エラーが見つかりました-1。シンボルを解決できません - tvUrl、2.シンボルを解決できません - url、3.シンボルを解決できません - tvTitle、そして4.返信文がありません –

関連する問題