Как изменить состояние переменной при запуске другого компонуемого объектаAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Как изменить состояние переменной при запуске другого компонуемого объекта

Сообщение Anonymous »

Я пробовал много разных решений для решения своей проблемы, но так и не смог ее решить. Я хотел бы изменить состояние переменной в Composable, когда запускается другой составной объект. Я действительно пробовал много разных решений. Это пример кода:

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

@Composable
private fun Actions() {
Row {
// More
var showMore by rememberState(initial = false)

IconButton(onClick = {showMore = true} )
{
Icon(imageVector = Icons.Outlined.MoreVert, contentDescription = null)
DropdownMenu(expanded = showMore, onDismissRequest = { showMore = false }
) {
Column {
Composable1
Composable2
Composable3
Composable4
}
}
}
}
}

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

What i need is changing the value of the variable showMore to "false" when the user clicks on one of the Composable in the column. I also tried putting the variable in a viewModel, so to change its value when the user is in the Composable, with a similar code (obviously changing the previous code so to collect the state of the variable from the view model and change it with the two functions):

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

var showMenuMore by mutableStateOf(false)
private set

fun showMenuMoreOpen() {
showMenuMore = true
}

fun showMenuMoreClose() {
showMenuMore = false
}
Проблема этой логики заключается в том, что когда я нажимаю значок showMore в строке, приложение открывает все showMore из всех доступных строк, а не только ту строку, на которую я нажал. Я действительно не знаю, как решить эту проблему.
Спасибо за вашу помощь.
Изменить.
Я думал о другом (без использования модели представления). .
Я мог бы изменить значение «var showMore» с помощью SideEffect (или LaunchedEffect с Unit в качестве ключа) в составных объектах с 1 до 4, но эта переменная недоступна за пределами составных элементов (Действия). Есть ли способ сделать его доступным?

Подробнее здесь: https://stackoverflow.com/questions/790 ... composable
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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