我使用 Android Studio Canara 2020.03 创建了一个 Empty Compose Activity 模板。这里是文件“MainActivity.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 版 提前致谢
答案 0 :(得分:0)
一个简单的解决方案是使用一个变量来指示当前屏幕。
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 compose navigation、deposit、compose-router 等。Here's 有关 jetpack compose navigation 的更多信息.