Java Android,在初始化失败()时替换YouTubePlayerFragment
在我的Android应用程序中,我通过一个Java Android,在初始化失败()时替换YouTubePlayerFragment,java,android,android-fragments,android-lifecycle,android-youtube-api,Java,Android,Android Fragments,Android Lifecycle,Android Youtube Api,在我的Android应用程序中,我通过一个FrameLayout将Youtubeplayer添加到另一个FrameLayout中,将Youtubeplayer放置在另一个片段中。 这一切都按预期进行。 现在,如果手机没有安装Youtube API运行所需的Youtube应用程序,我不想通过FragmentTransaction将YouTubePlayerFragment添加到根片段 我想到的只是创建一个布尔youtubeSuccess并将其设置为true,如果调用了onInitializatio
FrameLayout
将Youtubeplayer
添加到另一个FrameLayout
中,将Youtubeplayer
放置在另一个片段中。
这一切都按预期进行。
现在,如果手机没有安装Youtube API运行所需的Youtube应用程序,我不想通过FragmentTransaction
将YouTubePlayerFragment
添加到根片段
我想到的只是创建一个布尔youtubeSuccess
并将其设置为true,如果调用了onInitializationFailure
,我将其设置为false。所以稍后我可以简单地使用这个:
....
if (youtubeSuccess) {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();
}
return inflater.inflate(layoutResId, container, false);
.....
但不知何故,我的代码不起作用,我仍然会显示错误消息:
现在我不知道我是否没有正确理解生命周期,或者我是否会盲目地发现明显的错误。如果,为什么youtubeSuccess从未设置
完整代码:
public class SampleYouTubeSlide extends Fragment {
private FragmentActivity myContext;
private static final String ARG_LAYOUT_RES_ID = "layoutResId";
private int layoutResId;
private YouTubePlayer YPlayer;
private static final String YoutubeDeveloperKey = "XXXXXXXXXXXXXXXXX";
private static final int RECOVERY_DIALOG_REQUEST = 1;
static boolean youtubeSuccess;
public SampleYouTubeSlide() {
}
@Override
public void onAttach(Activity activity) {
if (activity instanceof FragmentActivity) {
myContext = (FragmentActivity) activity;
}
super.onAttach(activity);
}
public static SampleYouTubeSlide newInstance(int layoutResId) {
SampleYouTubeSlide sampleSlide = new SampleYouTubeSlide();
Bundle args = new Bundle();
args.putInt(ARG_LAYOUT_RES_ID, layoutResId);
sampleSlide.setArguments(args);
return sampleSlide;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null && getArguments().containsKey(ARG_LAYOUT_RES_ID))
layoutResId = getArguments().getInt(ARG_LAYOUT_RES_ID);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
youTubePlayerFragment.initialize(YoutubeDeveloperKey, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
youtubeSuccess = true;
if (!wasRestored) {
YPlayer = player;
YPlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
//YPlayer.setFullscreen(true);
YPlayer.cueVideo(getResources().getString(R.string.instructionsVideoId), 1);
//YPlayer.loadVideo(getResources().getString(R.string.instructionsVideoId));
//YPlayer.play();
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider arg0, YouTubeInitializationResult arg1) {
// Called when initialization of the player fails.
youtubeSuccess = false;
}
});
if (youtubeSuccess) {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();
}
return inflater.inflate(layoutResId, container, false);
}
}