0

VideoViewを使用してYouTubeビデオをフルスクリーンモードで表示しようとしています。実装する前に小さなコードを記述しましたが、取得していnullPointerExceptionます。以下は私が書いたサンプルコードです。

AndroidManifest.xmlファイルに権限を入力しました。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

main.xmlでビデオビューレイアウトを作成しました

<VideoView 
  android:id="@+id/VideoView"
  android:layout_height="fill_parent"
  android:layout_width="fill_parent" />

私のソースファイルは次のようになります。

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
VideoView vv = (VideoView) findViewById(R.id.VideoView);                        
MediaController mc=new MediaController(this);
mc.setEnabled(true);
vv.setVideoURI(Uri.parse("http://www.youtube.com/v/Iq81rUGQofk"));
vv.setMediaController(mc);
vv.requestFocus();
vv.showContextMenu();
vv.start(); 
setContentView(R.layout.main);
}

これは例外の下でスローしています。

11-19 03:11:50.558: E/AndroidRuntime(11488): FATAL EXCEPTION: main
11-19 03:11:50.558: E/AndroidRuntime(11488): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mydemoapp/com.example.mydemoapp.MainActivity}: java.lang.NullPointerException
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1999)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2024)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.app.ActivityThread.access$600(ActivityThread.java:126)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.os.Looper.loop(Looper.java:137)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.app.ActivityThread.main(ActivityThread.java:4479)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at java.lang.reflect.Method.invokeNative(Native Method)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at java.lang.reflect.Method.invoke(Method.java:511)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at dalvik.system.NativeStart.main(Native  Method)
11-19 03:11:50.558: E/AndroidRuntime(11488): Caused by: java.lang.NullPointerException
11-19 03:11:50.558: E/AndroidRuntime(11488):    at com.example.mydemoapp.MainActivity.onCreate(MainActivity.java:30)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.app.Activity.performCreate(Activity.java:4628)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-19 03:11:50.558: E/AndroidRuntime(11488):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1963)

これに対する私のアプローチが正しくない場合はお知らせください。

4

2 に答える 2

2

VideoView vv = (VideoView) findViewById(R.id.VideoView);呼び出す前に使用しているsetcontentView()ため、を取得してnullPointer Exceptionいます。

Videoviewビューが設定された後にを使用します。

于 2012-11-19T11:20:37.057 に答える
0

setContentView(R.layout.main);super.onCreate()の呼び出し後にを移動します。次のように

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

setContentView(R.layout.main);

VideoView vv = (VideoView) findViewById(R.id.VideoView);                        
MediaController mc=new MediaController(this);
mc.setEnabled(true);
vv.setVideoURI(Uri.parse("http://www.youtube.com/v/Iq81rUGQofk"));
vv.setMediaController(mc);
vv.requestFocus();
vv.showContextMenu();
vv.start(); 

}
于 2012-11-19T11:19:12.487 に答える