Java Android,在初始化失败()时替换YouTubePlayerFragment

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

在我的Android应用程序中,我通过一个
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);
    }

}