Схема моего приложения 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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