Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Compose:composables可以存储多个状态吗?_Android_Android Jetpack Compose - Fatal编程技术网

Android Compose:composables可以存储多个状态吗?

Android Compose:composables可以存储多个状态吗?,android,android-jetpack-compose,Android,Android Jetpack Compose,来自官方文件() 可组合函数可以使用memory Composable在内存中存储单个对象。在初始合成期间,由memory计算的值存储在合成中,并且在重新编译期间返回该存储的值。您可以使用memory来存储可变和不可变对象 所以每个可组合使用一个记住,但我在网上发现,在可组合中使用了不止一个状态的代码,实际上来自官方来源: 代码运行良好,但它存储两个状态,不是吗 我假设文档的意思是,使用一个记住可以存储一个对象,而不是每个组件不能有多个记住值 @Composable fun DropdownDe

来自官方文件()

可组合函数可以使用memory Composable在内存中存储单个对象。在初始合成期间,由memory计算的值存储在合成中,并且在重新编译期间返回该存储的值。您可以使用memory来存储可变和不可变对象

所以每个可组合使用一个
记住
,但我在网上发现,在可组合中使用了不止一个状态的代码,实际上来自官方来源:


代码运行良好,但它存储两个状态,不是吗

我假设文档的意思是,使用一个
记住
可以存储一个对象,而不是每个组件不能有多个
记住

@Composable
fun DropdownDemo() {
    var expanded by remember { mutableStateOf(false) }
    var selectedIndex by remember { mutableStateOf(0) }
    val items = listOf("A", "B", "C", "D", "E", "F")
    val disabledValue = "B"
    Box(modifier = Modifier.fillMaxSize().wrapContentSize(Alignment.TopStart)) {
        Text(items[selectedIndex],modifier = Modifier.fillMaxWidth().clickable(onClick = { expanded = true }).background(
            Color.Gray))
        DropdownMenu(
            expanded = expanded,
            onDismissRequest = { expanded = false },
            modifier = Modifier.fillMaxWidth().background(
                Color.Red)
        ) {
            items.forEachIndexed { index, s ->
                DropdownMenuItem(onClick = {
                    selectedIndex = index
                    expanded = false
                }) {
                    val disabledText = if (s == disabledValue) {
                        " (Disabled)"
                    } else {
                        ""
                    }
                    Text(text = s + disabledText)
                }
            }
        }
    }
}