如何在我的 SupportFragment 中添加 YouTube 播放器?

2023-12-02

我的 XML 代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    style="@style/Container.MainBackground"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

片段中的代码

public class VideoFragment extends YouTubePlayerSupportFragment implements YouTubePlayer.OnInitializedListener {

    static private final String DEVELOPER_KEY = "MyKey";
    static private final String VIDEO = "ToMpzhdUD1Q";
    static private final String VIDEO1 = "K77avo920Jc";
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View videoView = inflater.inflate(R.layout.video_fragment, container, false);
        getActivity().setTitle("Youtube");

        YouTubePlayerSupportFragment youTubePlayerSupportFragment = new YouTubePlayerSupportFragment();
        youTubePlayerSupportFragment.initialize(DEVELOPER_KEY, this);

        return videoView;
    }

    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {

        List<String> list = new ArrayList<>();
        list.add(VIDEO);
        list.add(VIDEO1);
        youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.DEFAULT);
        youTubePlayer.cueVideos(list);

    }

    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {

        Toast.makeText(getContext(), "FAIL!" + youTubeInitializationResult.toString(), Toast.LENGTH_LONG)
                .show();

    }
}

在主要活动中:

getSupportFragmentManager().beginTransaction().replace(R.id.main_container,fragment).addToBackStack(null).commit();

当我尝试打开抽屉中的片段时出错:

java.lang.NullPointerException:尝试调用虚拟方法“void” com.google.android.youtube.player.YouTubePlayerView.a()' 为空 对象引用位于 com.google.android.youtube.player.YouTubePlayerSupportFragment.onStart(未知 来源)


这里的问题是你覆盖了onCreateView()来自超类的方法YouTubePlayerSupportFragment,一个不是抽象的方法,它实际上有一个实现,如下所示:

    public View onCreateView(LayoutInflater var1, ViewGroup var2, Bundle var3) {
        this.c = new YouTubePlayerView(this.getActivity(), (AttributeSet)null, 0, this.a);
        this.a();
        return this.c;
    }

实际的变量名称和类型超出了本答案的范围。 这里重要的是YouTube播放器视图在这里被实例化,并且你覆盖了该方法,所以YouTube播放器视图为 null,当在onStart()方法(也可以在YouTubePlayerSupportFragment).

    public void onStart() {
        super.onStart();
        this.c.a();
    }

因此,基本上,您唯一需要的就是实例化您的视频片段类,并且,如果您想要实际的视频,而不是黑匣子,则需要在创建片段时对其进行初始化(如下所示:)

    public VideoFragment()
    {
        this.initialize("yourAPIKeyHere", this);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在我的 SupportFragment 中添加 YouTube 播放器? 的相关文章

  • Android 12:如何防止更改手机壁纸时重新启动活动?

    在 Android 12 上 如果我们开启一个活动 进入手机主屏幕更换壁纸 切换回我们的 Activity 该 Activity 重新启动 看起来它与 Material You 主题有关 我想在我的应用程序进入前台时禁用活动的重新启动 有办
  • ACTION_VIEW 的 Intent.createChooser 仅显示默认浏览器

    我正在尝试使用 Intent createChooser 显示应用程序选择器对话框 该对话框将列出用户手机中所有可用的网络浏览器 我正在使用下面的代码 Intent browserIntent new Intent Intent ACTIO
  • Android studio 在日志猫中“清除全部”,更改日志级别过滤器时日志仍然会回来

    在 LogCat 中 当我单击 全部清除 按钮时 它似乎清除了所有日志 但是 如果我更改日志级别并返回到之前的日志级别 则所有日志都会返回 例如 我正在查看 Verbose 我选择 全部清除 日志清除 我切换到 调试 我切换回 详细 现在所
  • 在 Android 中的活动、服务和应用程序之间传递变量

    有人可以给我提供以下活动 服务 应用程序组合的示例吗 我拥有这三个 但我已经把我的应用程序弄得一团糟 试图在这个地方传递一堆变量 现在我不知道发生了什么 请注意 我是 Android 新手 最近我一直在努力解决这个问题 因为有很多方法可以实
  • Mailgun POST /messages API 总是抛出 401 禁止

    我正在尝试使用改造库在 Android 中发送 Mailgun POST messages API 请求 以下是改装要求 HTTP POSThttps api key xxx v3 sandboxxxx messages https api
  • 更改 AChartEngine 中的图例大小

    我想专门更改饼图的图例大小输出 我已经尝试了所有可以找到的 AChartEngine 方法 但没有一个只能更改图例文本大小 我必须重写 onDraw 函数吗 如果是这样 怎么办 要设置图例高度 请使用 renderer setLegendH
  • MI设备中即使应用程序被杀死,如何运行后台服务

    您好 我正在使用 alaram 管理器运行后台服务 它工作正常 但对于某些 mi 设备 后台服务无法工作 我使用了服务 但它无法工作 如何在 mi 中运行我的后台服务 MI UI有自己的安全选项 所以你需要的不仅仅是上面提到的粘性服务 你需
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • 版本 5 上带有 getBackground().setAlpha 的按钮 - 棒棒糖无法正常工作

    我有这段代码 适用于自 API 14 以来的每个版本 但在 Android 5 0 Lollipop 上无法正常工作 以下是我希望按钮出现的方式 单击按钮1 buttonArrivals getBackground setAlpha 180
  • Android:如何监控WiFi信号强度

    当信号强度发生变化时我会收到通知 我尝试创建以下方法并在 onCreate 中调用它 private void initializeWiFiListener Log i TAG executing initializeWiFiListene
  • 模拟器:进程已完成,退出代码为 134(被信号 6:SIGABRT 中断)

    我最近刚刚开始在 Mac 上下载 Android Studio 版本 3 0 1 但收到以下错误 模拟器 进程已完成 退出代码为 134 被信号 6 SIGABRT 中断 我按照 Android Studio 教程操作并能够运行模拟器 但在
  • 点击监听器的公共类

    我的所有 6 项活动中有 7 个按钮 所有 6 个按钮在所有活动中都具有相同的功能 如何为这 6 个按钮执行通用的单击事件侦听器 您可以创建一个实现 View OnClickListener 的新类 如下所示 public class My
  • Android开发:未定义方法

    大家好 我是 Android 和 Eclipse 的新手 我刚刚遵循了developer android com 上的教程 现在我在添加操作栏 http developer android com training basics actio
  • Android:如何使视图增长以填充可用空间?

    这看起来很简单 但我不知道该怎么做 我有一个带有 EditText 和两个 ImageButtons 的水平布局 我希望 ImageButtons 具有固定大小 并且 EditText 占据布局中的剩余空间 如何才能做到这一点
  • Android:单一活动,多个视图

    我不是 Android 专业人士 尽管我开发了一个包含 50 多个活动的应用程序 这使得该应用程序非常庞大 经过8周的开发 现在出现了一些问题 导致应用程序难以维护和升级 我正在处理的主要问题是 我无法将对象引用传递给活动的构造函数 事实上
  • 如何使 tablayout 文本大小相等?

    这就是我所做的 我为文本创建了一种样式
  • 基于BluetoothChat示例通过蓝牙套接字发送文件

    大家好 根据我之前问的一个问题 我已经能够将文件转换为其他字节数组 以便使用以下写入方法 public void sendFile Log d TAG sending data InputStream inputStream null Ur
  • Android:获取最新意图

    如何获取发送到活动的最后一个意图 的文档onNewIntent 建议我需要做这样的事情 class MyActivity public void onNewIntent Intent intent setIntent intent reac
  • 绘制大位图时 nSyncAndDrawFrame 速度极慢

    我想用多个大位图优化视差滚动视图 在我的 Nexus 5 上 一切都很顺利 Traceview 转储如下所示 doFrame 方法大约需要 18 毫秒才能完成 但是 当使用我的 Nexus 7 或 Android 6 模拟器 Genymot

随机推荐

  • 设置 sbt 使用 Java 7 进行编译?

    我在运行时遇到编译错误compile任务 因为源引用了新类java nio file仅出现在 Java 7 中的包 我有以下内容build sbt javaHome Some file opt jdk jdk1 7 0 fork true
  • 重试之前的任务操作 TPL

    我想实现一个重试任务 该任务采用先前失败的任务操作并重复它 这是我到目前为止所拥有的 然而 它只是重复任务出错的事实 而不是再次实际触发任务的操作 public static async Task
  • Accept* HTTP 标头中的 q=0.5 是什么?

    Accept text html application xhtml xml application xml q 0 9 q 0 8 Accept Language en us en q 0 5 Accept Charset ISO 885
  • 如何在控制台项目中使用 Main() 启动窗口?

    我有一个控制台项目 但现在我需要放置一个用户界面 所以我使用 3 层模型 演示 业务 访问数据 按照我的方法Main 我调用的是表示层 比如Window形式的app或者Wpf 所以 在表示层就是通过CONSOLE与用户交互 现在 我在表示层
  • 运行 Android 应用程序时出现持续问题

    我在使用 Android 应用程序时遇到了非常困难的时期 我正在使用 Eclipse V 4 2 0 并运行 API 版本 7 下面是我遇到困难的一个程序的 LogCat 输出 这是我的代码 Manifest
  • Selenium WebDriver 和 Selenium 服务器

    我需要你的帮助来连接与硒相关的东西 在过去的几周里 我一直在阅读有关 Selenium 的文档 有selenium IDE 用于记录和重放测试的firefox扩展 硒 RC 硒 1 0 现在似乎已弃用 并使用代理 HTTP 服务器在多个浏览
  • IOS JSON 反序列化失败 - STIG/NSJSONSerializer

    我想反序列化从 IOS 中运行的 Web 服务收到的简单 JSON NickName James Roeiter3 TempId 634783760669935686 LDAP XUserName15 SecToken null NickN
  • OPENGL用户界面编程[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在开发一个图形应用程序来呈现数据 不是游戏 而是真正的主力应用程序 它需要跨平台 所以我选择了 python openGL 我需要 3D 混合
  • Excel VBA 循环遍历数据透视项

    我想循环遍历我的数据透视项并检查它们是否存在于另一个表中 请参阅我的示例屏幕截图 所以我想循环遍历所有颜色 检查它们是否存在于另一个表中 例如在另一个表中 有什么办法可以做到这一点 这样就会出现一个消息框 提示在列表中找不到紫色 非常感谢您
  • 如何在shell脚本中增加版本号?

    以下简单的版本控制脚本旨在查找给定文件的最后版本号 递增它 使用新创建的文件 例如编辑器 运行给定命令 然后将其保存到稳定版本 由于它很简单 因此不会检查任何内容 因为脚本会根据需要进行修改 例如 如果结果不稳定 用户可以省略最后一个参数
  • Java中有秒表吗?

    Java中有秒表吗 在 Google 上我只找到了不起作用的秒表代码 它们总是返回 0 毫秒 我发现这段代码不起作用 我不明白为什么 public class StopWatch private long startTime 0 priva
  • 在 VB 中从 SQL 检索数据(第 2 部分)

    我正在尝试通过 sql 从数据库检索数据来填充列表框 我之前已经问过这个问题 但我使用的是不同的配置 而我现在使用的配置没有给出任何结果 从 SQL 中检索 VB 中的数据 那是我的旧帖子 我现在将提供我的尝试的新版本的代码 Imports
  • 对 LinqDataSource 使用通配符

    我目前在 ASP NET 页面上有一个 LinqDataSource 用作 FormView 的数据源 我需要动态改变where基于通过查询字符串传递的参数的子句 除了我希望最终用户能够使用通配符之外 我的工作正常 A 用于表示单个字符 代
  • Eclipse RCP 中的全局变量

    我该如何解决这个问题 我的主 RCP 插件中有用户凭据信息 所有其他插件也应该具有该信息 偏好存储是不可能的 因为偏好存储还需要一个全局可用的节点名 有没有可能实现全局变量 Thanks 有几种选择 快速而肮脏的方法是将全局变量的 gett
  • 如何在PageObjectModel中的PageFactory中添加显式等待?

    我已经添加了硬编码等待thread sleep 在我下面的代码中 如何使用显式等待 我想等到 用户名 WebElement 出现 我的程序运行完美 我已经写好了测试用例 package com pol zoho PageObjects im
  • C# 中 VB.NET 类型转换函数 (CBool​​) 的替代方案?

    有没有什么可以替代VB的CBoolC 中的关键字 那么其他所有功能呢 CBool将转换为布尔值任何有效的布尔值 0 False null etc 诀窍是CxxVB NET 中的 函数 实际上并不是函数 事实上 他们更像是运营商编译器将其转换
  • WooCommerce:从产品变体中获取自定义字段并将其显示为变体价格的后缀

    我试图从产品变体的自定义数字字段中获取值 并将其显示为变体价格的后缀以及自定义文本 我的工作时间是从 WooCommerce 从产品变体中获取自定义字段并将其显示在 附加信息区域 将自定义文本添加到 Woocommerce 中的变化价格 这
  • 文件系统 API:文件和文件夹位于何处

    我目前正在开发一个 Chrome 应用程序 需要访问本地文件和目录 我的问题是当我创建文件或文件夹时它们位于哪里 该扩展当前位于我的主目录中 并且创建的文件不在扩展目录中 文件系统 API 是 虚拟的 因为您无法将文件完全按字面意思存储在客
  • 如何在 MATLAB 中绘制 4D 轮廓线 (XYZ-V)?

    我有 XYZ 数据集作为坐标 V 作为每个点的值 100x4 矩阵 我使用 patch 绘制 3D 曲面 按面和顶点 如何在 3D 表面上绘制 V 而非 Z 的轮廓线 Contour3 函数绘制 Z 的 3D 轮廓线 但我需要 V 的轮廓线
  • 如何在我的 SupportFragment 中添加 YouTube 播放器?

    我的 XML 代码