2011-10-06 234 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