【问题标题】:Cannot create Button in Jetpack Compose无法在 Jetpack Compose 中创建按钮
【发布时间】:2020-08-03 09:12:59
【问题描述】:

我在网上找到的大部分教程都是:

@Composable
fun addButton() {
   Button(text = "I'm a Compose Button")
}

但是 android studio 给我一个错误:type mismatch required: () -> Unit, Found: String. 我不知道如何解决这个问题。

【问题讨论】:

  • “我在互联网上的大部分教程中找到的内容”——查看这些教程的日期。 Jetpack Compose 目前仍处于开发者预览阶段,这意味着 API 变化非常快。

标签: android kotlin android-jetpack-compose


【解决方案1】:

根据文档,要创建Button,您必须在RowScope 中指定文本:

Button(onClick = {/* To execute when button is clicked */}) {
    Text("I'm a Compose Button")
}

然后由 androidx.ui.foundation 包中定义的Text() 函数设置文本。

您可以在 material-ui 文档中找到更多关于它们的信息:https://developer.android.com/reference/kotlin/androidx/ui/material/package-summary

【讨论】:

    【解决方案2】:

    这是在 Jetpack compose 中添加按钮的方法。

    Button(onClick = {/*Handle click action */}, modifier = Modifier.padding(16.dp)) {
        Text(
            text = "Jetpack Compose Button"
        )
    }
    

    参考资料:

    [1]https://developer.android.com/reference/kotlin/androidx/compose/material/package-summary#button

    【讨论】:

      【解决方案3】:

      使用打击代码

      Button(onClick {/* your onClick listener */}){
         Text("I'm a Compose Button")
      }
      

      【讨论】:

        【解决方案4】:

        我知道这看起来不太好,但你必须这样做

                        Button(onClick = {handle Click Action }) 
                             {
                            Text(text = "Your Button Text")
                        }
        

        【讨论】:

          【解决方案5】:

          你没有使用语法,

          你这个代码:

              Button(onClick = {/*Handle click action */} ){
              Text(
                  text = "Write the button text here"
              )
          }
          

          如果你想使用修饰符然后参考这个,

              Button(onClick = {/*Handle click action */}, modifier = Modifier.padding(16.dp)) {
              Text(
                  text = "Write the button text here"
              )
          }
          

          【讨论】: