Android Jetpack 导航的问题

时间:2021-01-12 15:06:47

标签: android kotlin android-jetpack android-jetpack-compose android-jetpack-navigation

我使用 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 版 提前致谢

1 个答案:

答案 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 的更多信息.