Android视频嵌入

时间:2011-10-06 12:52:05

标签: android video request embed

我有一个应用程序从网页中提取一些文本,并将其显示在屏幕上。我想在文本后面放一个来自网络的视频。我怎么能这样做?如果我喜欢以下代码,应用程序崩溃(空指针异常)。

我的代码:

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

1 个答案:

答案 0 :(得分:0)

您应该从异常中发布堆栈跟踪。并突出显示它指向哪条线。但在我的头顶,我注意到了:

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

findViewById(id)将返回null,除非视图已在屏幕上。您似乎没有在xml布局中使用WebView(我假设这是执行此代码时当前在屏幕上的那个)。由于你没有一个findViewById将返回null给你,当你尝试使用一个方法时,在下一行你会得到一个空指针。

基本上你有几个选择,但是你不需要findViewById和.addView(),你只需要一个或另一个。

你可以:

webview = (WebView) findViewById(R.id.webview);替换为WebView constroctor,如下所示:webview = new WebView(this);

或者

你可以在你的xml中添加一个WebView,将findViewById保留为现在但是取出tt.addView(webview);

另请注意,由于您在webview中显示youtube页面,因此用户将看到整个页面,而不仅仅是全屏电影。它不会立即启动,他们必须按下开始按钮才能启动它。如果您正在寻找能够自动播放视频而不显示其他内容的内容,那么您需要VideoView

Here is a fairly straight forward example of VideoView in action您只需将您的网址粘贴到路径变量中即可。虽然我不确定它是否知道如何解码youtube url。