2011-10-06 228 views
0

我有一個應用程序從網頁中獲取一些文本,並將其顯示在屏幕上。我想在網頁後面放一段視頻。我怎麼能這樣做?如果我喜歡下面的代碼,應用程序崩潰(空指針異常)。Android視頻嵌入

我的代碼:

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> 

我想不出該怎麼辦。我想我的應用程序,以顯示this而不是this

回答

0

您應該從異常中發佈堆棧跟蹤。並突出顯示它指向哪條線。但是從我這裏頭的頂部是我注意到:

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

findViewById(ID),除非觀點已經在屏幕上會返回null。您的xml佈局中似乎沒有WebView(我認爲這是執行此代碼時當前在屏幕上的那個WebView)。由於你沒有一個findViewById,當你試圖使用一個方法時你會得到一個空指針。

你有幾個選項基本上是什麼,雖然你不會需要findViewById和.addView(),你只需要一個或另一個。

您可以:webview = new WebView(this);

或者

您可以將的WebView添加到您的XML,離開findViewById它是如何,但現在拿出tt.addView(webview);

用的WebView constroctor像這樣更換webview = (WebView) findViewById(R.id.webview);

另外請注意,由於您在webview中顯示的是YouTube網頁,用戶將會看到整個頁面,而不僅僅是全屏電影。它不會立即開始,他們將不得不按下開始按鈕才能開始。如果你正在尋找的東西只是自動播放視頻,而不顯示任何其他東西,你會想要一個VideoView

Here is a fairly straight forward example of VideoView in action你只需要將你的url粘貼到路徑變量。雖然我不確定它是否知道如何解碼YouTube網址。

+0

如果我在xml中創建webview,當我輸入包含文本的活動時,我會自動定向到youtube。我希望在那裏嵌入視頻,當我點擊它時,將被重定向到頁面。你能告訴我我該怎麼做? – Teo

+0

然後您需要第一個選項。擺脫xml中的webview,並擺脫findViewById()調用,並使用webview = new WebView(this);並把tt.addView(webview);在你調用loadUrl()之後 – FoamyGuy