2011-10-06 4 views
0

J'ai une application qui récupère du texte à partir d'une page Web et l'affiche à l'écran. Je voudrais mettre après le texte une vidéo du web. Comment pourrais-je faire ça? Si j'aime bien le code suivant, l'application plante (exception du pointeur nul).Intégration vidéo Android

Mon code:

LinearLayout tt= (LinearLayout)findViewById(R.id.kiu); 
WebView webview; 
tt.addView(fin); // fin is the TextView 


     webview.getSettings().setJavaScriptEnabled(true); 
     webview.loadUrl("http://www.youtube.com/embed/j4Wmjl7jxQo"); 
     tt.addView(webview); 

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:scrollbars="vertical" 

    android:background="#FFFFFF" 

    > 
<LinearLayout 
android:id="@+id/kiu" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="0dp"> 

    </LinearLayout> 
</ScrollView> 

Je ne peux pas comprendre ce que dois-je faire .. Je voudrais que mon application pour afficher this au lieu de this.

Répondre

0

Vous devez publier la trace de la pile à partir de votre exception. Et mettre en évidence de quelle manière il pointe vers. Mais du haut de ma tête est ici ce que je remarque:

webview = (WebView) findViewById(R.id.webview); 
    ... 
    tt.addView(webview); 

findViewById (id) renvoie null à moins que la vue est déjà sur l'écran. Vous ne semblez pas avoir de WebView dans votre mise en page XML (ce que je suppose est celui qui est actuellement à l'écran lorsque ce code est en cours d'exécution). Puisque vous n'en avez pas, findViewById vous renverra la valeur null et sur la ligne suivante lorsque vous essaierez d'utiliser une méthode, vous obtiendrez un pointeur nul.

Vous avez essentiellement quelques options, mais vous n'aurez pas besoin de findViewById et de .addView(), vous n'aurez besoin que de l'une ou de l'autre.

Vous pouvez:

remplacer webview = (WebView) findViewById(R.id.webview); avec un constroctor WebView comme ceci: webview = new WebView(this);

Ou

vous pouvez ajouter une WebView à votre xml, laissez findViewById comment il est maintenant prendre mais à tt.addView(webview);

Sachez également que puisque vous affichez une page youtube dans un webview, l'utilisateur va voir toute la page, pas seulement un film en plein écran. Et il ne va pas commencer immédiatement, ils devront appuyer sur le bouton de démarrage pour le faire fonctionner. Si vous cherchez quelque chose pour lire la vidéo automatiquement et ne rien afficher d'autre, vous aurez besoin d'un VideoView

Here is a fairly straight forward example of VideoView in action Vous devez simplement coller votre URL dans la variable de chemin. Bien que je ne sais pas si elle sait comment décoder une url youtube ou non.

+0

Si je fais le webview dans le xml, quand j'entre dans l'activité contenant le texte, je suis automatiquement dirigé vers youtube. Je voudrais avoir la vidéo intégrée là et quand je clique dessus, pour être redirigé vers la page. Pourrais-tu me dire comment je peux faire ça? – Teo

+0

Vous voudrez alors la première option. Débarrassez-vous du webview dans votre xml, et débarrassez-vous de l'appel de findViewById() et employez juste webview = new WebView (ceci); et mettez tt.addView (webview); après avoir appelé loadUrl() – FoamyGuy