2014-09-25 3 views
1

Мой код:WebView и shouldOverrideUrlLoading

public class View_WebView extends Activity { 
    WebView myWebView; 

    private class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      if (url.endsWith(".mp4")){ 
      Intent in = new Intent (Intent.ACTION_VIEW , Uri.parse(url)); 
      startActivity(in); 
      return true; 
     } 
     else 
      return false; 
     } 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     myWebView = (WebView) findViewById(R.id.webview); 
     myWebView.setWebViewClient(new WebViewClient());  
     myWebView.loadUrl("http://hdcast.pl"); 
    }  

} 


    <?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 

Затмение компилирует правильно, когда я запускаю мое приложение на моем смартфоне я получил ошибку:

«К сожалению, приложение XX было остановлено»

+0

вы пожалуйста отправить свой логарифм? – Shadow

+0

Вход в мой смартфон поврежден ... – vifus

+0

Вы можете показать логарифм здесь .. – Ranjit

ответ

1

Ваш WebView имеет нулевое значение, раскомментировать эту строку:

myWebView = (WebView) findViewById(R.id.webview); 

Edit:

Вы также должны иметь WebView элемент в вашем XML

<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 
+0

Да ... это основная причина, которая должна дать здесь nullpointer .. + 1 для поиска основной проблемы. – Ranjit

+0

Ошибка: веб-просмотр не может быть разрешен или не является полем – vifus

+0

Не забудьте добавить webview в свой xml, см. Мое редактирование –

1

Вы не используете его правильно!

Вы должны создать свой собственный WebClient, который расширит WebClient, и внутри там будет использоваться shouldOverrideUrlLoading под ваши нужды.

http://developer.android.com/guide/webapps/webview.html

private class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.endsWith(".mp4")){ 
     Intent in = new Intent (Intent.ACTION_VIEW , Uri.parse(url)); 
     startActivity(in); 
     return true; 
    } 
    else 
     return false; 
    } 
} 

Затем добавить свой собственный WebClient к вашей WebView, и вы хорошо идти.

myWebView.setWebViewClient(new MyWebViewClient());  
myWebView.loadUrl("XXX"); 

EDIT: В соответствии с предыдущим ответом, хотя, убедитесь, что вы инициализации вашего WebView с findViewById()

1

Сделайте это прямо:

Из этого tutorial

myWebView.setWebViewClient(new WebViewClient() { 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
if (url.endsWith(".mp4")){ 
    Intent in = new Intent (Intent.ACTION_VIEW , Uri.parse(url)); 
    startActivity(in); 
    return true; 
} 
else 
    return false; 
} 
Смежные вопросы