Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Chromecast按钮仅在应用程序背景接地后出现_Android_Chromecast - Fatal编程技术网

Android Chromecast按钮仅在应用程序背景接地后出现

Android Chromecast按钮仅在应用程序背景接地后出现,android,chromecast,Android,Chromecast,情况很简单。将Chromecast按钮添加到工具栏。首次启动应用程序时,按钮不会出现。当我将应用程序设置为背景,然后再次将其置于前台时,按钮会出现。是的,在同一个wifi网络上有一个可浇铸设备 MyFragment.kt override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { inflater.inflate(R.menu.toolbar_menu, menu) CastButtonFact

情况很简单。将
Chromecast
按钮添加到
工具栏
。首次启动应用程序时,按钮不会出现。当我将应用程序设置为背景,然后再次将其置于前台时,按钮会出现。是的,在同一个wifi网络上有一个可浇铸设备

MyFragment.kt

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {

    inflater.inflate(R.menu.toolbar_menu, menu)

    CastButtonFactory
        .setUpMediaRouteButton(context?.applicationContext, menu, R.id.media_route_menu_item)

    return super.onCreateOptionsMenu(menu, inflater)
}
toolbar\u menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/media_route_menu_item"
        android:title="@string/media_route_menu_title"
        app:actionProviderClass="androidx.mediarouter.app.MediaRouteActionProvider"
        app:showAsAction="always" />
</menu>

就这样。简单的解决方案。希望它对其他人有所帮助。

在创建片段实例之前,您需要确保Cast SDK已初始化

移动Cast SDK初始化代码 (、和)进入父活动将按预期工作。然后,可能只是在默认情况下隐藏菜单项并从片段中显示它就可以了


根据,MediaRouteButton应该处于碎片活动中。我猜回调不是从片段中调用的,那么,它的可见性不会动态变化。因此,您将需要从活动中强制转换它,并在接收更新时传递给片段。不是很优雅,但应该可以用。

谢谢。这基本上是正确的,解决了我的问题。问题很简单。我没有像你提到的那样提前调用
CastContext.getSharedInstance(this)
。回调和侦听器与此无关,我不需要将其传递给片段。非常感谢您的帮助。我将用最终解决方案更新我的OP,以向其他人澄清。非常感谢!在将Cast SDK用于React本机应用程序时,我们也遇到了这个问题,发现为了识别本地Cast接收器设备,我们必须在本机主机应用程序的
onCreate
中调用
CastContext.getSharedInstance(this)
,而不是等到React本机模块上的
createViewInstance
调用它。
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    CastContext.getSharedInstance(this)
}