2014-10-31 2 views
0

Я получаю исключение нулевого указателя при попытке установить видео в VideoView в фрагменте диалогового окна Android. Вот мое содержание LogCatОшибка отображения видео в VideoView в android

Caused by: java.lang.NullPointerException 
     at com.shimba.android.ngoma.fragments.VideoUploadFragment.onCreateDialog(VideoUploadFragment.java:52) 
     at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:307) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:942) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121) 
     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484) 
     at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:571) 
     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1133) 
     at android.app.Activity.performStart(Activity.java:4475) 
     at android.app.Activity.performRestart(Activity.java:4526) 
     at android.app.Activity.performResume(Activity.java:4531) 
     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2450) 
        at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2488) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1174) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:4440) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
          at java.lang.reflect.Method.invoke(Method.java:511) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787) 
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554) 
                at dalvik.system.NativeStart.main(Native Method) 

И мой код:

public class VideoUploadFragment extends DialogFragment implements AdapterView.OnItemSelectedListener, View.OnClickListener { 
    Spinner genres; 
    VideoView videoView; 
    TextView submit; 
    String filePath; 


    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     // Get the layout inflater 
     LayoutInflater inflater = getActivity().getLayoutInflater(); 
     View v = inflater.inflate(R.layout.fragment_videoupload_dialog, null); 
     builder.setView(v); 

     genres = (Spinner) v.findViewById(R.id.videoupload_spinner_genre); 
submit=(TextView)v.findViewById(R.id.videoupload_textView_submit); 

     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(getActivity(), 
       R.layout.ngoma_spinner, getResources().getStringArray(R.array.genres)); 
     dataAdapter 
       .setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
     genres.setAdapter(dataAdapter); 


     Bundle bundle = getArguments(); 
     if(bundle != null) 
     { 
      filePath= bundle.getString("filePath"); 
     } 
     Log.i("videopath", filePath); 
     videoView.setVideoPath(filePath); 

     genres.setOnItemSelectedListener(this); 
     submit.setOnClickListener(this); 
     return builder.create(); 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()){ 
      case R.id.videoupload_textView_submit: 
       getDialog().dismiss(); 
       break; 
     } 
    } 
} 

Ошибка на линии

videoView.setVideoPath(filePath); 

Однако, я могу увидеть значение

Log.i("videopath", filePath); 

Который

10-31 18:23:16.382 13883-13883/ngoma.android.shimba.com.ngoma I/videopath﹕ /mnt/sdcard/Pictures/Ngoma/VID_20141031_182304.mp4 

Где я теряю трек?

ответ

0

Вы забыли инициализировать videoView перед вызовом videoView.setVideoPath(filePath) в onCreateView(), это должно быть так:

videoView = (VideoView) v.findViewById(R.id.your_videoview_id); 
+0

да просто заметил, что. Спасибо хоть. –

Смежные вопросы