У меня возникли проблемы с выяснением того, как сделать то, что я хочу здесь... Я хочу изменить текст в Text Composable, когда я нажимаю кнопку, но я не могу заставить его работать, потому что я не не знаю, как ссылаться на данный текст. Компонуемый из onClick моей кнопки. В частности, я хочу написать код после строки
var mult: Double = typeMatchups[attackType][defenseType] * typeMatchups[attackType][defenseType2]
чтобы изменить текст текста, прокомментированного как «Отобразить результат здесь». Я не понимаю, как я могу это сделать, поскольку Composables возвращает Unit, а не ссылку на созданный объект, а также существует проблема, заключающаяся в том, что я не могу использовать stringResource() внутри onClick потому что это не составная функция. Вот мой код, значения itemList опущены, чтобы немного уменьшить размер моего сообщения, как и значения typeMatchups, который представляет собой 2D-массив Double< /code>s.
Что касается кода DropdownList Composable, я взял его с этого сайта.
@Composable
fun ContentView() {
val itemList = listOf(...)
var selectedIndex by rememberSaveable { mutableStateOf(0) }
var selectedIndex2 by rememberSaveable { mutableStateOf(0) }
var selectedIndex3 by rememberSaveable { mutableStateOf(0) }
val norm = 1.0
val weak = 0.5
val strg = 2.0
val inef = 0.0
val typeMatchups = arrayOf(...)
val buttonModifier = Modifier.width(100.dp)
Column(
modifier = Modifier,
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
//Start of 1st Row
Row {
Text(text = stringResource(R.string.attack_type))
DropdownList(
itemList = itemList,
selectedIndex = selectedIndex,
modifier = buttonModifier,
onItemClick = { selectedIndex = it },)
}
//End of 1st Row
//Start of 2nd Row
Row {
Text(text = stringResource(R.string.defending_type_1))
DropdownList(
itemList = itemList,
selectedIndex = selectedIndex2,
modifier = buttonModifier,
onItemClick = { selectedIndex2 = it })
}
//End of 2nd Row
//Start of 3rd Row
Row {
Text(text = stringResource(R.string.defending_type_2))
DropdownList(
itemList = itemList,
selectedIndex = selectedIndex3,
modifier = buttonModifier,
onItemClick = { selectedIndex3 = it })
}
//End of 3rd Row
// Text Composable showing selected types
Text(
text = stringResource(
R.string.selected_types,
itemList[selectedIndex],
itemList[selectedIndex2],
itemList[selectedIndex3]
),
textAlign = TextAlign.Center,
modifier = Modifier
.padding(3.dp)
.fillMaxWidth()
.background(Color.LightGray),
)
Button(onClick = {
val attackType = selectedIndex
val defenseType = selectedIndex2
val defenseType2 = selectedIndex3
var mult: Double = typeMatchups[attackType][defenseType] * typeMatchups[attackType][defenseType2]
}) {
Text("Filled")
}*/
//Display result here
Text(text = stringResource(R.string.button_default))
}
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... when-using