首页 > 解决方案 > 如何防止 youtube 片段视图在方向更改时重新加载

问题描述

当我的应用程序中的方向发生变化时,我想防止 youtube 片段视图重新加载。我在用YouTubeAndroidPlayerApi.jar

我已经添加了android:configChanges="orientation|screenSize",但它无法保护重新加载。

AndroidManifest.xml

<activity android:name=".MainActivity"
        android:theme="@style/AppTheme"
        android:configChanges="orientation|screenSize">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
    </activity>

activity_main.xml

<fragment
    android:id="@+id/youtube_player_fragment"
    android:name="com.google.android.youtube.player.YouTubePlayerFragment"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String youTubeKey = getString(R.string.YouTubeKey);

        YouTubePlayerFragment youTubePlayerFragment = (YouTubePlayerFragment) getFragmentManager().findFragmentById(R.id.youtube_player_fragment);
        youTubePlayerFragment.initialize(youTubeKey, this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
    youTubePlayer = player;

    //Enables automatic control of orientation
    youTubePlayer.setFullscreenControlFlags(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION);
    //Show full screen in landscape mode always
    youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_ALWAYS_FULLSCREEN_IN_LANDSCAPE);
    //System controls will appear automatically
    youTubePlayer.addFullscreenControlFlag(YouTubePlayer.FULLSCREEN_FLAG_CONTROL_SYSTEM_UI);

    if (!wasRestored) {
        youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
        youTubePlayer.loadVideo(getString(R.string.link));
    }
    else
    {
        youTubePlayer.play();
    }
}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult errorReason) {
    youTubePlayer = null;
    Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_LONG).show();
}

标签: androidandroid-fragmentsyoutube-apiandroid-orientation

解决方案


android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"

尝试将此添加到 Android 清单中的 Activity 标记中。


推荐阅读