android - getSupportActionBar 与 YouTubeBaseActivity

标签 android android-youtube-api

我正在尝试在我的应用程序上播放 YouTube 视频。我知道这可以通过将 Activity 扩展为 YouTubeBaseActivity 来实现,这样做我无权访问我的工具栏。

mActionBar = (Toolbar) findViewById(R.id.toolbar);
        if (mActionBar != null)
        {
            setSupportActionBar(mActionBar);
        }

        getSupportActionBar().setTitle(getResources().getString(R.string.youtubetitle));
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);

我收到 getSupportActionbar 无法解析的消息。有没有一种简单的方法可以通过扩展 YouTubeBaseActivity Activity 来访问工具栏。

我做错了什么吗?

谢谢!

最佳答案

YouTubeBaseActivity extends Activity ,(与例如 AppCompatActivity 相反),因此 getSupportActionBar() 方法不存在。

您可以尝试让您的类扩展AppCompatActivity,并使用 YouTubePlayerSupportFragment而是您通常使用 YouTubePlayerView 的任何地方。

编辑:

将以下内容添加到您的layout 文件中,代替 YouTubePlayerView

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

ActivityonCreate() 中访问它,就像访问任何其他静态 Fragment

public class CustomYouTubeActivity extends AppCompatActivity implements YouTubePlayer.OnInitialisedListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.fragments_demo);

        YouTubePlayerSupportFragment frag =
            (YouTubePlayerSupportFragment) getSupportFragmentManager().findFragmentById(R.id.youtube_fragment);
        frag.initialize(DeveloperKey.DEVELOPER_KEY, this);
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player,
  boolean wasRestored) {
        if (!wasRestored) {
        //I assume the below String value is your video id
        player.cueVideo("nCgQDjiotG0");
    }

    @Override
    public void onInitializationFailure (YouTubePlayer.Provider provider, YouTubeInitializationResult error) {
        if (errorReason.isUserRecoverableError()) {
            errorReason.getErrorDialog(this, RECOVERY_DIALOG_REQUEST).show();
        } else {
            String errorMessage = String.format(getString(R.string.error_player), errorReason.toString());
            Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
        }
    }    

}

关于android - getSupportActionBar 与 YouTubeBaseActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61433425/

相关文章:

java - 前缀字符串资源标识符以在运行时选择替代版本

android - 如何在 Youtube Player android API 中隐藏控件、全屏按钮?

android - Youtube 获取上传的视频列表。找不到文件错误

android - 检查 Android OREO 中的前台服务是否正在运行

android - 如果我通过捏合、拖动和缩放移动和调整图像大小,我怎么知道我触摸了图像的哪个位置

java - Android - 打开刚刚创建的文件时出错

java - 将通用 RecyclerView 适配器转换为 Kotlin

android - 视频播放完成后如何关闭youtube API的standAlonePlayer

java - 在 RecyclerView 中使用 Youtube 缩略图

android - Youtube API key