2011-12-16 6 views
3

애플 리케이션 작동 방식은 내가 비디오의 목록입니다. 비디오보기는 비디오를 재생할 것이고 사용자는 왼쪽 또는 오른쪽으로 스 와이프하여 비디오에서 비디오로 이동할 수 있습니다.NookTablet 안드로이드 - VideoView NullPointerException

테스트를 마친 다른 모든 기기에서 앱이 버그없이 작동합니다. (Samsung Galaxy Tab 7, Samsung Galaxy Player, Acer Iconia A500, Nook Color, LG Optimus, Kindle Fire)

그런 다음 Nook Tablet에서 테스트했습니다. NullPointerException이 발생합니다. 이것은 한 방향 (vid1> vid2)으로 스 와이프 한 다음 다른 방향 (vid2> vid1)으로 다시 스 와이프하면 발생합니다. 내가했다 로그 여기

private void playVideo(ViewFlipper flipper){ 

     LinearLayout flipperchild = (LinearLayout) flipper.getCurrentView(); 
     VideoView video = (VideoView) flipperchild.getChildAt(0); 

     if(preVideoView != null){ 
     preVideoView.stopPlayback();  
     preVideoView.setVisibility(View.INVISIBLE); 
     } 

       // Current Video   
     nextVideoView = video; 

       // Current Video for pausing 
     pauseVideoView = nextVideoView; 

     nextVideoView.setVisibility(View.VISIBLE); 
     nextVideoView.requestFocus(); 
     nextVideoView.start(); 

       // Stores the current video, so when I change videos this 
       // becomes the previous video 
     preVideoView = nextVideoView; 
     isPlaying = true; 
     nextVideoView.setOnTouchListener(videoViewTouch);  
    } 

됩니다 : 여기

추락 코드의 섹션

E/AndroidRuntime(27744): FATAL EXCEPTION: main 
E/AndroidRuntime(27744): java.lang.NullPointerException 
E/AndroidRuntime(27744): at android.widget.VideoView.openVideo(VideoView.java:330) 
E/AndroidRuntime(27744): at android.widget.VideoView.access$2600(VideoView.java:60) 
E/AndroidRuntime(27744): at android.widget.VideoView$6.surfaceCreated(VideoView.java:604) 
E/AndroidRuntime(27744): at android.view.SurfaceView.updateWindow(SurfaceView.java:547) 
E/AndroidRuntime(27744): at android.view.SurfaceView.setVisibility(SurfaceView.java:221) 
E/AndroidRuntime(27744): at com.selectsoft.gymnasticskids.VideoChapter.playVideo(VideoChapter.java:407) 
E/AndroidRuntime(27744): at com.selectsoft.gymnasticskids.VideoChapter.access$2(VideoChapter.java:397) 
E/AndroidRuntime(27744): at com.selectsoft.gymnasticskids.VideoChapter$OnTouchViewFlipper.onTouch(VideoChapter.java:376) 
E/AndroidRuntime(27744): at android.view.View.dispatchTouchEvent(View.java:3882) 
E/AndroidRuntime(27744): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:914) 
E/AndroidRuntime(27744): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
E/AndroidRuntime(27744): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
E/AndroidRuntime(27744): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
E/AndroidRuntime(27744): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
E/AndroidRuntime(27744): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
E/AndroidRuntime(27744): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:942) 
E/AndroidRuntime(27744): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1852) 
E/AndroidRuntime(27744): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1271) 
E/AndroidRuntime(27744): at android.app.Activity.dispatchTouchEvent(Activity.java:2096) 
E/AndroidRuntime(27744): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1836) 
E/AndroidRuntime(27744): at android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2198) 
E/AndroidRuntime(27744): at android.view.ViewRoot.handleMessage(ViewRoot.java:1882) 
E/AndroidRuntime(27744): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(27744): at android.os.Looper.loop(Looper.java:130) 
E/AndroidRuntime(27744): at android.app.ActivityThread.main(ActivityThread.java:3683) 
E/AndroidRuntime(27744): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(27744): at java.lang.reflect.Method.invoke(Method.java:507) 
E/AndroidRuntime(27744): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
E/AndroidRuntime(27744): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
E/AndroidRuntime(27744): at dalvik.system.NativeStart.main(Native Method) 

내가 널 포인터를 일으키는 것을 잘 모르겠지만, 내가 사용하는 시도 모두

setContentView(); 
VideoView video = (VideoView) findViewById(R.id.chapterVideoView); 

하지만 효과가 없습니다. 이 시점에서 나는 꽤 난처하게되고, 약간의 도움을 원할 것이다.

감사합니다,

제이미

+0

어떤 일이 일어나고 있는지 명확히하기 위해 모든 곳에서 다음 줄로 과제를 바꾸는 것이 좋습니다.'nextVideoView = pauseVideoView = preVideoView = video;'. 그러나 이것이 실제로 NPE를 도울 것이라고 상상할 수는 없습니다. – sarnold

+0

그래, 혼란스러워지고 있었다. 그 점을 분명히하기 위해 변경했습니다. NPE에도 많은 도움이되지 않았습니다. – Jaime

+0

죄송합니다. 어떤 해결책을 찾았습니까? Lenovo A1_07과 동일한 문제가 있습니다. – mikhail

답변

1

나는 레노버 A1_07과 같은 오류 로그와 같은 문제가 있었다. 그러나 시행 착오 끝에 나는 그것을 풀었다. VideoView#stopPlayback()VideoView#pause()으로 변경하고 문제가 완전히 해결되었습니다.

관련 문제