Форум для тех, кто программирует под Android
Anonymous
Как перейти к одному и тому же композиционному, но использовать разные параметры?
Сообщение
Anonymous » 30 май 2025, 22:01
Я хотел бы перейти на разные страницы, следуя кнопке, которую я нажимаю. Я застрял с функцией разборки < /p>
Код: Выделить всё
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
enum class CalculationScreens {
ChooseLevel,
Addition
}
@Composable
fun ActivityChoice(
navController: NavHostController = rememberNavController()
) {
Scaffold() { innerPadding ->
NavHost(
navController = navController,
startDestination = CalculationScreens.ChooseLevel.name
) {
composable(route = CalculationScreens.ChooseLevel.name) {
ChooseLevel(
onButtonLevelClicked = {
navController.navigate(CalculationScreens.Addition.name)
},
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
)
}
composable(route = CalculationScreens.Addition.name) {
AdditionScreen(
level = "easy",
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
)
}
composable(route = CalculationScreens.Addition.name) {
AdditionScreen(
level = "medium",
modifier = Modifier
.fillMaxSize()
.padding(innerPadding)
)
}
}
}
}
< /code>
Страница с двумя кнопками: < /p>
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.widthIn
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
@Composable
fun ChooseLevel(
onButtonLevelClicked: () -> Unit,
modifier: Modifier = Modifier
) {
Column(
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Button(
onClick = onButtonLevelClicked,
Modifier.widthIn(min = 250.dp)
) {
Text("Easy")
}
Button(
onClick = onButtonLevelClicked,
Modifier.widthIn(min = 250.dp)
) {
Text("Medium")
}
}
}
< /code>
Можно ли передать переменную (level в моем случае) Когда я нажимаю на кнопку?>
Подробнее здесь:
https://stackoverflow.com/questions/796 ... parameters
1748631701
Anonymous
Я хотел бы перейти на разные страницы, следуя кнопке, которую я нажимаю. Я застрял с функцией разборки < /p> [code]import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController enum class CalculationScreens { ChooseLevel, Addition } @Composable fun ActivityChoice( navController: NavHostController = rememberNavController() ) { Scaffold() { innerPadding -> NavHost( navController = navController, startDestination = CalculationScreens.ChooseLevel.name ) { composable(route = CalculationScreens.ChooseLevel.name) { ChooseLevel( onButtonLevelClicked = { navController.navigate(CalculationScreens.Addition.name) }, modifier = Modifier .fillMaxSize() .padding(innerPadding) ) } composable(route = CalculationScreens.Addition.name) { AdditionScreen( level = "easy", modifier = Modifier .fillMaxSize() .padding(innerPadding) ) } composable(route = CalculationScreens.Addition.name) { AdditionScreen( level = "medium", modifier = Modifier .fillMaxSize() .padding(innerPadding) ) } } } } < /code> Страница с двумя кнопками: < /p> import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.widthIn import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp @Composable fun ChooseLevel( onButtonLevelClicked: () -> Unit, modifier: Modifier = Modifier ) { Column( modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.Center ) { Button( onClick = onButtonLevelClicked, Modifier.widthIn(min = 250.dp) ) { Text("Easy") } Button( onClick = onButtonLevelClicked, Modifier.widthIn(min = 250.dp) ) { Text("Medium") } } } < /code> Можно ли передать переменную (level[/code] в моем случае) Когда я нажимаю на кнопку?> Подробнее здесь: [url]https://stackoverflow.com/questions/79645865/how-to-navigate-to-the-same-composable-but-use-different-parameters[/url]