Схема моего приложения IPTV находится над игроком, и, хотя он кодируется, что когда вы нажимаете назад, его следует удалAndroid

Форум для тех, кто программирует под Android
Anonymous
Схема моего приложения IPTV находится над игроком, и, хотя он кодируется, что когда вы нажимаете назад, его следует удал

Сообщение Anonymous »

Изображение проблемы < /p>
На изображении вы можете увидеть игрока в фоновом режиме и макет поиска канала, который находится наверху, вы можете увидеть меню «Опции», которое работает нормально, но имеет этот макет, не удаляясь. С поисковым наложением не исчезает должным образом. Наложение остается видимым даже после попытки закрыть его.

Код: Выделить всё

activity_main.xml
):

Код: Выделить всё











< /code>
 Search Overtay Mayout (fragment_channel_search.xml
):




















< /code>
текущая реализация < /h2>
Вот как я сейчас обращаюсь с наложением: < /p>
private fun showChannelSearchOverlay() {
Log.d(tag, "Showing channel search overlay")
try {
// 1. Clean any existing overlay
removeSearchOverlay()

// 2. Ensure container is visible
val overlayContainer = findViewById(R.id.overlayContainer)
overlayContainer?.visibility = View.VISIBLE

// 3. Create and show search fragment
val fragment = ChannelSearchFragment(
allChannels = channelsList,
onChannelSelected = { channel ->
playChannel(channel)
removeSearchOverlay()
playerView.requestFocus()
}
)

supportFragmentManager.beginTransaction()
.replace(R.id.overlayContainer, fragment, "ChannelSearchFragment")
.commitAllowingStateLoss()

Log.d(tag, "Search overlay fragment added successfully")
} catch (e: Exception) {
Log.e(tag, "Error showing search overlay: ${e.message}", e)
findViewById(R.id.overlayContainer)?.apply {
removeAllViews()
visibility = View.GONE
}
}
}

private fun removeSearchOverlay() {
Log.d(tag, "Attempting to remove search overlay")
try {
// 1. Remove fragment if exists
val frag = supportFragmentManager.findFragmentByTag("ChannelSearchFragment")
if (frag != null) {
Log.d(tag, "Found search fragment, removing it")
supportFragmentManager.beginTransaction()
.remove(frag)
.commitAllowingStateLoss()
}

// 2. Clean container
val overlayContainer = findViewById(R.id.overlayContainer)
overlayContainer?.removeAllViews()
overlayContainer?.visibility = View.GONE

// 3. Ensure player gets focus
playerView.post {
playerView.requestFocus()
Log.d(tag, "Focus returned to player view")
}
} catch (e: Exception) {
Log.e(tag, "Error removing search overlay: ${e.message}", e)
findViewById(R.id.overlayContainer)?.apply {
removeAllViews()
visibility = View.GONE
}
}
}
< /code>
Проблема < /h2>
Поисковое наложение не исчезает должным образом, когда: < /p>

Нажатие кнопки на спине < /li>
Выбирая канал < /li>
Иногда остается видно после того, как приложение восстанавливается из фонового < /li>

. Пробое: < /p>

Настройка видимости для Gone < /li>
Удаление всех представлений < /li>
Удаление фрагмента < /li>
обеспечение правильного управления фокусом < /li>
< /ul>
, каково это, что это может вызвать, и как я могу это решить? /> Дополнительная информация < /h2>

Android TV App < /li>
Использование Exoplayer для воспроизведения видео < /li>
Оверлей реализуется как фрагмент < /li>
>

Подробнее здесь: https://stackoverflow.com/questions/796 ... h-it-is-co

Вернуться в «Android»