オリエンテーションが変更されるたびに、アクティビティはすべての子コンポーネントと同じくらい長く再現されます。今重要な部分は、YouTubePlayer.Providerがステージを保持することです(ロードされた動画、現在の再生位置、プレーヤーの設定など)。以下を見て:あなたのケースで
YouTubePlayer Overview
を、向きの変更後、活性は、その子の断片(youTubePlayerFragment)限り、再作成されます。そのため、YouTubePlayerのインスタントと動画を読み込むために必要なデータ(videoIDやvideo URLなど)の参照が失われましたが、YouTubePlayerのプロバイダはまだローテーション後にnullになる以前の状態を保持しています。
ソリューション:あなたが実際に方向を変更デバイスの前にYouTubePlayer上でビデオを再生するために必要なデータを保存すると、アクティビティが再作成されたときに戻ってデータを取得する方法を管理する必要があります。以下を見ている:あなたのコードの構造について
YouTubePlayerFragment Overview
わからないが、しかし、次のコードは、あなたにいくつかのアイデアを与えることを願っています:youtubeplayer上で再生映像を得るためにサンプル
@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");
}
を
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 !!!");
}
});
}