CastListner не работает во фрагменте - PullRequest
0 голосов
/ 05 октября 2019

Я хочу использовать 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)
    }

Этот код не возвращает мне вызов внутри CastListner при использовании во Fragment, но он прекрасно работает, когда я использую его в Activity или Fragment.

IЯ использую пользовательский вид

<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"/>

Я хочу скрыть / показать вид на основе доступных устройств приведения

1 Ответ

0 голосов
/ 08 октября 2019

Я не думаю, что это хорошая идея использовать CastStateListener во фрагменте. Потому что деятельность может содержать несколько фрагментов. Когда действие приостановлено, все фрагменты в нем приостановлены, поэтому возобновляются. В коде, если вы добавите CastStateListener во фрагмент onResume и удалите CastStateListener во фрагмент onPause. Если действие содержит несколько фрагментов, очень легко испортить добавление / удаление CastStateListener. Поэтому я думаю, что лучше добавить / удалить CastStateListener в жизненный цикл действия

...