2016-06-26 7 views
0

こんにちは私はこの問題を抱えています。私はタブ付きのアクティビティがあり、各フラグメントにはwebviewがあり、webviewsにはロード時の進行状況バーが表示されます私が去っアプリのクラッシュにプログレスバーvisibiltyを設定するときにはAVDログには、例外を示していないが、私はprogressBar visibiltyを設定するとアプリケーションがクラッシュする

progressBar.setVisibility(View.GONE); 

をコメントしてきたとき、それは単にクラッシュしませんが、誰も私を伝えることができれば、プログレスバーが常にありますどこに問題があるのですか、私はとても感謝します。ありがとう、これは私のコードです。

package org.lsvbdarija.app; 

    import android.content.Context; 
    import android.content.Intent; 
    import android.graphics.Bitmap; 
    import android.net.ConnectivityManager; 
    import android.net.NetworkInfo; 
    import android.net.Uri; 
    import android.os.Bundle; 
    import android.os.Handler; 
    import android.os.Message; 
    import android.support.annotation.Nullable; 
    import android.support.v4.app.Fragment; 
    import android.view.KeyEvent; 
    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; 

    /** 
    * Created by Anas on 20/06/2016. 
    */ 

    public class SocialFragment extends Fragment { 

    public WebView mWebView; 
    ProgressBar progressBar; 

    private Handler handler = new Handler() { 
     @Override 
     public void handleMessage(Message message) { 
      switch (message.what) { 
       case 1: { 
        webViewGoBack(); 
       } 
       break; 
      } 
     } 
    }; 

    @Nullable 
    @Override 
    public View onCreateView(final LayoutInflater inflater, final ViewGroup container, 
          Bundle savedInstanceState) { 
     if (!haveNetworkConnection()) { 
      getActivity().setContentView(R.layout.activity_splashscreen); 
     } 

     View v = inflater.inflate(R.layout.social_layout, container, false); 
     mWebView = (WebView) v.findViewById(R.id.webview); 
     mWebView.loadUrl("http://www.lsvbdarija.com/search/label/%D8%B9%D9%84%D9%88%D9%85"); 

     // Enable Javascript 
     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     progressBar = (ProgressBar) getActivity().findViewById(R.id.progressBar); 

     // Force links and redirects to open in the WebView instead of in a browser 
     mWebView.setWebViewClient(new WebViewClient(){ 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       // TODO Auto-generated method stub 
       super.onPageStarted(view, url, favicon); 
      } 

      public boolean shouldOverrideUrlLoading(WebView view, String url) { 

       String url2="http://www.lsvbdarija.com/"; 
       // all links with in ur site will be open inside the webview 
       //links that start ur domain example(http://www.example.com/) 
       if (url != null && url.startsWith(url2)){ 
        return false; 
       } 
       // all links that points outside the site will be open in a normal android browser 
       else { 
        view.getContext().startActivity(
          new Intent(Intent.ACTION_VIEW, Uri.parse(url))); 
        return true; 
       } 
      } 
      public void onPageFinished(WebView view, String url) { 
       // TODO Auto-generated method stub 
       super.onPageFinished(view, url); 

       // progressBar.setVisibility(View.GONE); 
      } 
     }); 


     mWebView.setOnKeyListener(new View.OnKeyListener() { 

      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
        handler.sendEmptyMessage(1); 
        return true; 
       } 
       return false; 
      } 


     }); 

     return v; 

    } 


    private void webViewGoBack() { 
     mWebView.goBack(); 
    } 


    private boolean haveNetworkConnection() { 
     boolean haveConnectedWifi = false; 
     boolean haveConnectedMobile = false; 

     ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo[] netInfo = cm.getAllNetworkInfo(); 
     for (NetworkInfo ni : netInfo) { 
      if (ni.getTypeName().equalsIgnoreCase("WIFI")) 
       if (ni.isConnected()) 
        haveConnectedWifi = true; 
      if (ni.getTypeName().equalsIgnoreCase("MOBILE")) 
       if (ni.isConnected()) 
        haveConnectedMobile = true; 
     } 
     return haveConnectedWifi || haveConnectedMobile; 
    } 



} 
+0

アプリがクラッシュした場合、logcatに例外がある必要があります。例外が表示されない場所にログフィルタリングが設定されていないことを確認してください。 –

+0

ログをコピーしたいのであれば、絶対に何もありません。/ –

+0

「絶対に何もない」というのは非常に疑わしいことです。 Android Studioを使用している場合は、Androidモニタツールウィンドウのlogcatタブに、右上のドロップダウンボックスに「フィルタなし」と表示されていることを確認してください。ログに例外のない開始と終了が表示されている場合は、それを投稿してください。 –

答えて

0

フラグメントレイアウトまたはアクティビティレイアウトで進行状況バーが定義されていますか?フラグメント内にある場合は、

progressBar =(ProgressBar)v.findViewById(R.id.progressBar);である必要があります。

0

getアクティビティ()を置き換えます。findviewbyid()をv.findviewbyid()に置き換えます。

getアクティビティ()を置き換えます。findviewbyid()をv.findviewbyid()に置き換えます。

getアクティビティ()を置き換えます。findviewbyid()をv.findviewbyid()に置き換えます。

getアクティビティ()を置き換えます。findviewbyid()をv.findviewbyid()に置き換えます。

関連する問題