2016-04-19 3 views
0

Я использую webView в Android и пытаюсь проверить Android с уровнем API выше или равным 19. Мой код отлично подходит для уровня API выше 19, но WebView не открылся в API LEVEL 19. Может кто-то, пожалуйста, проверьте это. Вот код:Веб-представление не загружалось в API-уровень 19 (KITKAT)

public boolean loadingFinished = true;//is loading finished 
public boolean redirect = false;// redirect to page 
/** 
* {@inheritDoc} 
*/ 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.web_view, container, false); 
    mWebView = (WebView) rootView.findViewById(R.id.webView); 
    //initializing views 
    backButton = (BUtton) rootView.findViewById(R.id.web_view_back_button); 
    titleTextView = (TextView) rootView.findViewById(R.id.web_view_textView); 
    progressBar = (ProgressBar) rootView.findViewById(R.id.web_view_progress_bar); 
    backButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      getActivity().onBackPressed(); 
     } 
    }); 
    mWebView.setVisibility(View.GONE);//Visible the view after full loaded 
    mWebView.setInitialScale(1); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.getSettings().setLoadWithOverviewMode(true); 
    mWebView.getSettings().setUseWideViewPort(true); 
    mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    mWebView.setScrollbarFadingEnabled(false); 
    //check for network connection if not available show error msg!!! 
    if (!NetworkService.getConnectivityInfo().isConnected(getContext())) { 
     progressBar.setVisibility(View.GONE); 
     Toast.makeText(getContext(), getContext().getString(R.string.no_network_msg), Toast.LENGTH_SHORT).show(); 
    } else { 
     mWebView.loadUrl("https://www.google.co.in"); 
    } 
    progressBar.setVisibility(View.VISIBLE); 
    mWebView.setWebViewClient(new WebViewClient() { 

     /** 
     * {@inheritDoc} 
     */ 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) { 
      if (!loadingFinished) { 
       redirect = true; 
      } 

      loadingFinished = false; 
      view.loadUrl(urlNewString); 
      return true; 
     } 

     /** 
     * {@inheritDoc} 
     */ 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      loadingFinished = false; 
     } 

     /** 
     * {@inheritDoc} 
     */ 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      if (!redirect) { 
       loadingFinished = true; 
      } 

      if (loadingFinished && !redirect) { 
       progressBar.setVisibility(View.GONE); 
       //After page is loaded then whole web-view is visible 
       mWebView.setVisibility(View.VISIBLE); 
      } else { 
       redirect = false; 
      } 

     } 
    }); 

    return rootView; 
} 
+0

Если вы хотите, чтобы «WebView» загружал страницу, вы должны «вернуть false» из 'shouldOverrideUrlLoading()' и удалить вызов 'view.loadUrl()'. –

+0

Ya Я пробовал это хорошо на уровне API, превышающем 19. Но эта же проблема не работает в API уровня 19 – FiXiT

+0

Да, я не думал, что это вызывало вашу текущую проблему. Я просто указал на это. –

ответ

0

В уровне API 19 функции setInitialScale (INT scaleInPercent) не work.Thats почему код работает хорошо на уровне API выше 19. После удаления mWebView.setInitialScale(1); из моего кода он хорошо работает и в API-интерфейсе 19 уровня.

0

Был изменение WebView двигателя в API 19. http://developer.android.com/guide/webapps/migrating.html

+0

Thankyou Fiil Но мой код отлично работает на уровне API выше 19. Только на уровне API 19 он загружается и застрял с белым экраном – FiXiT

+0

Белый экран появляется с не-SSL-адресом? – Fiil

+0

Да нет Ошибка SSL. – FiXiT

Смежные вопросы