【问题标题】:CastListner not workin in FragmentHostListener 在片段中不起作用
【发布时间】:2020-02-03 08:17:56
【问题描述】:

我想在片段中使用 CastStateListener 来检查投射设备是否可用。 Fragment中使用的代码是

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        mCastContext = CastContext.getSharedInstance(mContext)
        mCastStateListener = CastStateListener { newState ->
            if (newState != CastState.NO_DEVICES_AVAILABLE) {
                castDevicesAvailable = true
            }
        }
    }

    override fun onResume() {
        super.onResume()
        mCastContext?.addCastStateListener(mCastStateListener)
    }


    override fun onPause() {
        super.onPause()
        mCastContext?.removeCastStateListener(mCastStateListener)
    }

此代码在 Fragment 中使用时不会在 CastListner 中给我回调,但当我在 Activity 或 Fragment 中使用它时它可以正常工作。

我正在使用自定义视图

<androidx.mediarouter.app.MediaRouteButton
                    android:id="@+id/media_route_button"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:actionButtonStyle="@android:style/Widget.Holo.Light.MediaRouteButton"/>

我想根据可用的投射设备隐藏/显示视图

【问题讨论】:

    标签: android video-streaming google-cast exoplayer2.x google-cast-sdk


    【解决方案1】:

    我认为在片段中使用 CastStateListener 不是一个好主意。因为一个活动可以承载多个片段。当一个活动暂停时,其中的所有片段都会暂停,因此会恢复。在代码中,如果在 Fragment onResume 中添加 CastStateListener,在 Fragment onPause 中移除 CastStateListener。如果活动托管多个片段,则很容易弄乱添加/删除 CastStateListener。所以我认为最好在活动生命周期中添加/删除 CastStateListener

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-21
      • 2021-04-07
      • 2017-01-29
      • 2017-01-29
      • 2017-09-03
      • 2014-10-02
      • 2021-01-03
      • 1970-01-01
      相关资源
      最近更新 更多