2015-11-16 3 views
0

В настоящее время я получаю исключение нулевого указателя во фрагменте при вызове getHolder. вот код для фрагментаNull pointer Исключение во фрагменте при вызове getholder fucntion

public class Camera_Fragment extends Fragment implements IVideoPlayer, View.OnClickListener { 
Button up, dowm, right, left; 

SurfaceView CamView; 
private String VideoUrl = "http://192.168.0.4:81/videostream.cgi?user=admin&password=admin"; 

private SurfaceHolder Holder; 
private Surface surface = null; 
private LibVLC libVLC; 

private int mVideoHeight; 
private int mVideoWidth; 
private int mVideoVisibleHeight; 
private int mVideoVisibleWidth; 
private int mSarNum; 
private int mSarDen; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.cam1, container, false); 
    CamView = (SurfaceView) view.findViewById(R.id.Cam1_CamVIew); 

    up = (Button) view.findViewById(R.id.Cam_up); 
    dowm = (Button) view.findViewById(R.id.Cam_down); 
    right = (Button) view.findViewById(R.id.Cam_right); 
    left = (Button) view.findViewById(R.id.Cam_left); 

    up.setOnClickListener(Camera_Fragment.this); 
    dowm.setOnClickListener(Camera_Fragment.this); 
    right.setOnClickListener(Camera_Fragment.this); 
    left.setOnClickListener(Camera_Fragment.this); 
    return view; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Cam_Play(); 
} 

private void Cam_Play() { 
    Holder = CamView.getHolder(); 
    try { 
     libVLC = new LibVLC(); 
     libVLC.setVout(LibVLC.VOUT_ANDROID_SURFACE); 
     libVLC.setHardwareAcceleration(LibVLC.HW_ACCELERATION_AUTOMATIC); 
     libVLC.init(getActivity().getApplicationContext()); 
    } catch (LibVlcException e) { 
     e.printStackTrace(); 
    } 
    surface = Holder.getSurface(); 
    libVLC.attachSurface(surface, this); 
    libVLC.playMRL(VideoUrl); 
} 

выше код работает безупречно в деятельности .. Но в фрагменте его нет .. Я до сих пор biggner в Android development.And я использую фрагменты для первого время. Любое решение или предложение. вот LogCat

11-17 01:03:52.301 5860-5860/com.fyp.tirz.wifisurveillance E/AndroidRuntime: FATAL EXCEPTION: main 11-17 01:03:52.301 5860-5860/com.fyp.tirz.wifisurveillance E/AndroidRuntime: Process: com.fyp.tirz.wifisurveillance, PID: 5860 11-17 01:03:52.301 5860-5860/com.fyp.tirz.wifisurveillance E/AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.SurfaceHolder android.view.SurfaceView.getHolder()' on a null object reference 11-17 01:03:52.301 5860-5860/com.fyp.tirz.wifisurveillance E/AndroidRuntime: at Fragments.Camera_Fragment.onCreate(Camera_Fragment.java:62)

+0

, что линия является NullPointer на – Xjasz

ответ

0

Удалить это.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Cam_Play(); 
} 

Добавить здесь Cam_Play.

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.cam1, container, false); 
    CamView = (SurfaceView) view.findViewById(R.id.Cam1_CamVIew); 

    up = (Button) view.findViewById(R.id.Cam_up); 
    dowm = (Button) view.findViewById(R.id.Cam_down); 
    right = (Button) view.findViewById(R.id.Cam_right); 
    left = (Button) view.findViewById(R.id.Cam_left); 

    up.setOnClickListener(Camera_Fragment.this); 
    dowm.setOnClickListener(Camera_Fragment.this); 
    right.setOnClickListener(Camera_Fragment.this); 
    left.setOnClickListener(Camera_Fragment.this); 

    Cam_Play(); //< ----------------(ADD IT HERE) 

    return view; 

}

+0

Вы спасли мой день сэр .. Thankyou! –

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