为Button添加onClickListener时出现编译错误

时间:2019-07-04 02:02:20

标签: android

尝试在Android应用程序中为按钮添加onClickListener时出现编译错误。错误如下:

  

构建失败792毫秒   运行版本号690 ms   加载建立2毫秒   配置版本94毫秒   计算任务图41毫秒   运行任务550毫秒   空
  / home / avinash / AndroidStudioProjects / JustJava
  app / src / main / java
  com / example / android / justjava / MainActivity.kt
  期待成员声明
  期待成员声明
  期待成员声明
  期待成员声明
  函数声明必须具有名称

     

任务:app:buildInfoGeneratorDebug

MainActivity.kt如下:

package com.example.android.justjava

    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import android.widget.Button
    import android.widget.Toast

    class MainActivity : AppCompatActivity() {

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
        }

        val order_button = findViewById<Button>(R.id.order_button)

        //set listener
        order_button.setOnClickListener {
            //Action perform when the user clicks on the button.
            Toast.makeText(this@MainActivity, "You clicked me.", Toast.LENGTH_SHORT).show()
        }

    }

XML如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            tools:context=".MainActivity">

        <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Quantity"
                android:textAllCaps="true"
                android:layout_marginBottom="16dp"
                android:paddingLeft="16dp"
                android:paddingTop="16dp"/>
        <TextView
                android:id="@+id/quantity_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="0"
                android:textColor="#000000"
                android:textSize="16sp"
                android:paddingLeft="16dp"/>
        <Button android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Order"
                android:layout_marginTop="16dp"
                android:id="@+id/order_button"/>

2 个答案:

答案 0 :(得分:2)

由于您已经在使用Kotlin,如何尝试 More Kotlin 风格?

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        btnLabel.setOnClickListener { Toast.makeText(this, "Toast", Toast.LENGTH_SHORT).show() }
    }

您不需要findViewById()或其他任何东西。 您需要导入类似import kotlinx.android.synthetic.main.activity_main.*

的内容

但是AndroidStudio可以为您自动生成。

答案 1 :(得分:0)

像这样更新您的MainActivity

class MainActivity: AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle ? ) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val order_button = findViewById<Button> (R.id.order_button)

        //set listener
        order_button.setOnClickListener {
            //Action perform when the user clicks on the button.
            Toast.makeText(this @MainActivity, "You clicked me.", Toast.LENGTH_SHORT).show()
        }
    }


}