我使用Android Studio Canara 2020.03创建了一个Empty Compose Activity模板。这是文件"的代码;主要活动。kt":
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
ButtonPage()
}
}
}
@Composable
fun ButtonPage(){
Button(onClick = {}){Text("Click to go next")}
}
@Composable
fun TextPage(){
Text("Second Page")
}
我该如何修改代码,以便当您单击此按钮时,它只绘制文本?(也就是说,当你点击按钮时,程序需要先删除这个内容来绘制其他内容(。Jetpack Compose版本1.0.0-alpha09,jdk版本15,android版本11提前感谢
一个简单的解决方案是使用一个变量来指示当前屏幕。
var showSecondScreen by remember { mutableStateOf(false) }
if (!showSecondScreen) {
Button(onClick = {showSecondScreen = true}){Text("Click to go next")}
} else {
Text("Second screen")
}
这不一定是布尔值,您可以声明var currentScreen by remember { mutableStateOf("homeScreen") }
并使用when
块来显示哪个屏幕。
@Composable fun MyApp(currentScreen: String) {
when (currentScreen) {
"homeScreen" -> HomeScreen()
"secondScreen" -> SecondScreen()
}
}
因此,您可以将它看作一个事务,而更多地看作一个有状态导航。
但您很快就会意识到,这无法处理反向导航,因此您需要一个导航库,如jetpack组合导航、分解、组合路由器等。以下是有关jetpack合成导航的更多信息。