2011-12-16 2 views
3

Как работает приложение, у меня есть список видео. Видео-просмотр будет воспроизводить видео, и пользователь может прокручивать влево или вправо, чтобы переходить с видео на видео.NookTablet Android - VideoView NullPointerException

Приложение работает без ошибок во всех других устройствах, на которых я тестировал. (Samsung Galaxy Tab 7, Samsung Galaxy Player, Acer Iconia A500, Nook Color, LG Optimus, Kindle Fire)

Затем я тестировал на планкторе Nook. Я получаю исключение 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); 

Но они не сработали. На данный момент я довольно тупой и хотел бы помочь.

С уважением,

Jaime

+0

Я бы рекомендовал заменить назначения по всему месту следующей строкой, просто чтобы понять, что происходит: 'nextVideoView = pauseVideoView = preVideoView = video;'. Но я не могу себе представить, что это действительно поможет NPE. – sarnold

+0

Да, это пугало. Я сделал изменения, чтобы это понять. Не сделал ничего для NPE. – Jaime

+0

К сожалению, вы нашли какое-либо решение? У меня такая же проблема с Lenovo A1_07 – mikhail

ответ

1

У меня была такая же проблема с Lenovo A1_07 и тот же журнал ошибок. Но после проб и ошибок я решил это. Я изменил VideoView#stopPlayback() на VideoView#pause(), а затем проблема была решена полностью.