You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端展示MediaRoute列表的菜单不显示无报错如何解决

问题排查及解决方案

  • 修正错误的R类导入
    你代码中导入了系统android.R类,会导致后续读取菜单资源ID时引用系统资源而非你项目内定义的cast_options菜单资源,直接删除import android.R这行代码即可,IDE会自动导入你项目包名下的R类。

  • 检查菜单文件配置是否正确
    你的res/menu/cast_options.xml需要正确配置MediaRoute菜单项的属性,示例正确配置如下:

<?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="投屏"
        app:actionProviderClass="androidx.mediarouter.app.MediaRouteActionProvider"
        app:showAsAction="always" />
</menu>

注意必须配置app:showAsAction="always"才会直接显示在顶部菜单栏,否则会被收纳到溢出菜单中;actionProviderClass要使用androidx包下的正确路径。

  • 确认Activity使用了AppCompat主题
    你继承的是AppCompatActivity,必须使用AppCompat系列主题,否则菜单栏的加载会出现异常,检查AndroidManifest.xml中该Activity的theme属性配置为Theme.MaterialComponents.DayNight.NoActionBar或者其他AppCompat衍生主题。

  • 确认已添加正确依赖
    检查模块级build.gradle文件中已添加MediaRouter依赖,示例:

dependencies {
    implementation "androidx.mediarouter:mediarouter:1.7.0"
}

注意版本要和你项目其他androidx组件版本兼容。

  • 修正已废弃的API调用
    MenuItemCompat早已被废弃,直接调用MenuItem本身的方法即可,修改onCreateOptionsMenu中的对应代码:
val mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item)
val mediaRouteActionProvider = mediaRouteMenuItem.actionProvider as MediaRouteActionProvider
mediaRouteActionProvider.setRouteSelector(mSelector!!)
  • 检查是否存在匹配的投屏设备
    MediaRoute按钮默认逻辑是只有检测到符合你定义的MediaRouteSelector规则的可用设备时才会显示,如果当前局域网内没有可用的投屏/远程播放设备,按钮会自动隐藏,你可以开启一台支持投屏的设备(比如智能电视、Chromecast、模拟器的投屏模拟功能)处于同一局域网后再测试。

内容的提问来源于stack exchange,提问作者Mario Muresean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:54:02