Android Compose-将@Composables存储到数组中

问题描述

我想通过将Composables存储到Array / Stack中来实现简单的导航,以便可以使用Back按钮将其恢复。但是我不知道如何在数组中添加Composable。试图声明匿名Composable,以便我可以将其变量放入堆栈中但无法编译?我可以将函数名称放入数组吗?

  var Details1 = @Composable
  fun() {
    Column(Modifier.fillMaxSize()) {
      Text("Details 1")
    }
  }

  var views = arrayOf(Details1)

解决方法

以下是带有建议的arrayOf(::Details1)的代码,但无效

> package com.example.myapplication
> 
> import android.os.Bundle import
> androidx.appcompat.app.AppCompatActivity import
> androidx.compose.foundation.Text import
> androidx.compose.foundation.layout.Column import
> androidx.compose.foundation.layout.fillMaxSize import
> androidx.compose.runtime.Composable import
> androidx.compose.ui.Modifier import
> androidx.compose.ui.platform.setContent
> 
> class MainActivity : AppCompatActivity() {
> 
>   @Composable   fun Details1() {
>     Column(Modifier.fillMaxSize()) {
>       Text("Details 1")
>     }   }
> 
>   override fun onCreate(savedInstanceState: Bundle?) {
>     super.onCreate(savedInstanceState)
>     setContent {
> 
>       var views = arrayOf(::Details1)
> 
>       var view = views.get(0)
> 
>       view()
> 
>       //Details1()
> 
>     }   } }
,

这似乎可行

// make an alias
typealias ComposableFun = @Composable () -> Unit
// composable function as lambda
val Test : ComposableFun = { Text("Test") }
// list of composable functions
val composableFuns = listOf(Test,Test,Test)

// elsewhere
composableFuns[0]()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...