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