在 Jetpack Compose 中处理背部压力

ABI*_*AR 11 android kotlin android-jetpack-compose

我有一个Composable具有不同视图的视图 (请参阅代码以更好地理解)
当用户单击按钮时,它会导航到不同的视图,但是当用户按下后退按钮时,它会导航到上一个屏幕,但我想导航到上一个视图
,例如“返回”按viewState更改它的值
注意:我没有找到比这更好的解释

var viewState by remember { mutableStateOf(0) }
    Column {
        when (viewState) {
            0 -> { Button(onClick = { viewState = 1 }) { Text(text = "Goto 1") } }
            1 -> { Button(onClick = { viewState = 2 }) { Text(text = "Goto 2") } }
            2 -> { Button(onClick = { viewState = 3 }) { Text(text = "Goto 3") } }
            3 -> { Button(onClick = { viewState = 4 }) { Text(text = "Goto 0") } }
        }
    }
Run Code Online (Sandbox Code Playgroud)

ABI*_*AR 12


我得到了我没有添加的答案,0因为它将执行navController

var viewState by remember { mutableStateOf(0) }
    when(viewState){
        1 -> BackHandler(enabled = true) {
            viewState = 0
        }
        2 -> BackHandler(enabled = true) {
            viewState = 1
        }
        3 -> BackHandler(enabled = true) {
            viewState = 2
        }
    }
    Column {
        val nextViewState = (viewState + 1) % 4
        Button(onClick = { viewState = nextViewState }) {
            Text(text = "Goto $nextViewState")
        }
    }
Run Code Online (Sandbox Code Playgroud)

还有function

编辑:BackHandler是一个系统函数

  • `BackHandler` 是一个系统函数,不需要在答案中包含它的源代码。另外,将“when”移动到单个“BackHandler”内会更干净。 (13认同)