Каждый раз, когда ориентация меняется, деятельность будет воссоздана до тех пор, пока все дочерние компоненты. Теперь важная часть состоит в том, что YouTubePlayer.Provider будет содержать свои этапы (такие как: загруженные видео, текущая позиция воспроизведения и конфигурации проигрывателя). Посмотрите на следующее:
YouTubePlayer Overview
В Вашем случае, после изменения ориентации, активность воссоздан до тех пор, как его фрагмент ребенка (youTubePlayerFragment). Таким образом, вы потеряли ссылку на сайт YouTubePlayer и данные (такие как видеоID или видеоролик), которые необходимы для загрузки видео, но поставщик YouTubePlayer все еще удерживает предыдущее состояние, которое после поворота становится нулевым.
Вам действительно нужно управлять способом сохранения данных, необходимых для воспроизведения видео на YouTubePlayer, прежде чем устройство изменит ориентацию и вернет данные при восстановлении активности. Посмотрите на следующее:
YouTubePlayerFragment Overview
Не уверен о вашей структуре кода, но надеюсь, что следующий код даст вам некоторое представление:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("currentVideoID",videoID);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
videoID = savedInstanceState.getString("currentVideoID");
}
образец, чтобы получить видео игры на youtubeplayer
private void loadYouTubePlayer(){
//load your youTubePlayerFragment here, i used YouTubePlayerSupportFragment(),may change in your case
//also you may not need to call getActivity(). Change the code as require
youTubePlayerFragment = (YouTubePlayerSupportFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.youtube_fragment);
youTubePlayerFragment.initialize(developerKey,new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
myYouTubePlayer = youTubePlayer;
myYouTubePlayer.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION | YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE);
myYouTubePlayer.setOnFullscreenListener(new YouTubePlayer.OnFullscreenListener() {
@Override
public void onFullscreen(boolean b) {
isFullScreenPlaying = b;
Log.d(null,"Now fullScreen");
}
});
if (!b) {
myYouTubePlayer.loadVideo(videoID);
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Log.e(null,"Initialization Failed !!!");
}
});
}