CastListner在片段中不起作用

问题描述 投票:0回答:1

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

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个回答
0
投票

我认为在片段中使用CastStateListener不是一个好主意。因为一个活动可以承载多个片段。暂停活动后,活动中的所有片段都会暂停,因此将继续。在代码中,如果您在片段onResume中添加CastStateListener并在片段onPause中删除CastStateListener。如果活动包含多个片段,则很容易弄乱添加/删除CastStateListener。因此,我认为最好在活动生命周期中添加/删除CastStateListener。

© www.soinside.com 2019 - 2024. All rights reserved.