Using this method is throwing a null object reference. Butterknife wont allow any refrence to view inside the void go(){ function. Is there a way to access this view YouTubePlayerView youTubePlayerView = player_view; inside the function?
.java
@BindView(R.id.youtube_player_view) YouTubePlayerView player_view;
YouTubePlayerView youTubePlayerView = player_view;
//start view trailer
@OnClick(R.id.iv_play_circle)
void go(){
String vid = video.getVideoKey();
if(vid != null){
youTubePlayerView.addYouTubePlayerListener(new AbstractYouTubePlayerListener() {
@Override
public void onReady(@NonNull YouTubePlayer youTubePlayer) {
youTubePlayer.loadVideo(vid, 0);
}
});
}
}//end view trailer
@Override
public void onDestroyView () {
if(youTubePlayerView != null) {
youTubePlayerView.release();
}
super.onDestroyView ();
}
error log
E/CustomActivityOnCrash: The previous app process crashed. This is the stack trace of the crash:
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView.addYouTubePlayerListener(com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.YouTubePlayerListener)' on a null object reference
Here you're expcting the value of
youTubePlayerViewto be the same as the 'filled' value of theplayer_viewview variable, but in reality, this assigment is done at the time before theplayer_viewhas been bound to the view.That is because the
@BindViewtakes effect afterButterKnife.bind(this)is called on youronCreate(), but your assignment is done on the class initialization.Either just use
player_viewdirectly, or do theyouTubePlayerView = player_view;after you have calledButterKnife.bind(this).