Контекстное меню Android Compose в элементе списка xml не закрываетсяAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Контекстное меню Android Compose в элементе списка xml не закрывается

Сообщение Anonymous »

Мой текущий проект Android содержит элементы списка и списка XML, причем каждый элемент списка имеет контекстное меню.
контекстное меню реализовано с помощью Android Compose DropDownMenu следующим образом:
элемент списка xml содержит это представление и в моем BaseExpandableListAdapter (

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

getChildView
) функция «строит» каждый элемент списка следующим образом:-

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

    val showDropDownMenuState = MutableStateFlow(false)

ui.ivCustomButton.setOnClickListener {
showDropDownMenuState.value = true
onCustomButtonClick(customButton, showDropDownMenuState)
}
и

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

private fun onContextMenuClick(showDropDownMenuState: MutableStateFlow) {
ui.cvCustomButtonDdm.apply {

setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
val showDropDownMenu by showDropDownMenuState.collectAsStateWithLifecycle()

SideEffect {
println("showDropDownMenu = $showDropDownMenu")
}

ItemSettingsDdm(
showDropDownMenu = showDropDownMenu,
myDataItem = myDataItem!!,
onAllocated = { myDataItem?.let { onAllocatedCallback?.invoke(it) } },
onCompleted = {
myDataItem?.let {
onProgressCompletedClickCallback?.onProgressCompleted(
it
)
}
},
onDeleted = {
if (!isReadOnly) {
val dialog = FDeleteItemUniversal()
.withTitle(context.getString(R.string.delete_myDataItem_label))
.withMessage(context.getString(R.string.delete_myDataItem))
dialog.setItemToDelete(myDataItem)
onDeletedCallback?.let { dialog.setCallback(it) }
dialog.show(context.toAppActivity()?.supportFragmentManager)
} else {
context.err(R.string.myDataItem_is_readonly)
}
},
onDismissRequest = {
showDropDownMenuState.value = false
}
)
}
}
}
когда я тестирую контекстное меню, нажимая на него, чтобы оно отображалось в каждом отдельном элементе списка, первоначально сообщения отладки SideEffect имеют смысл, поскольку меню отображается, а затем закрывается, как показано здесь: -
р>

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

 showDropDownMenu = true
showDropDownMenu = false

showDropDownMenu = true
showDropDownMenu = false

showDropDownMenu = true
showDropDownMenu = false

showDropDownMenu = true
showDropDownMenu = false

showDropDownMenu = false
showDropDownMenu = true
тогда, как показывает последняя пара журналов, состояние раскрывающегося меню находится в неправильном порядке
почему val showDropDownMenuState = MutableStateFlow(false) путается?
что я сделал не так, чтобы достичь этой «функции»?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ot-dismiss
Ответить

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

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

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

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

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