Android Studio:你是如何用 Kotlin 在按下按钮时创建一个方法的?

Android Studio: How do you make a method when pressing a button with Kotlin?

我已经尝试为 Android Studio 上的按钮制作以下方法,但当我 运行 时,应用程序崩溃了。

MainActivity : AppCompatActivity() {

    val button = findViewById(R.id.button) as Button
    var count = 0
    val textView = findViewById(R.id.textView) as TextView

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

        button.setOnClickListener{
            buttonAction()
        }
    }

    fun buttonAction(){
        count = count+1
        textView.text = count.toString()
    }
}

我很清楚,为了使按钮起作用,您需要将内容放入“button.setOnClickListener”部分(见下文)。但是,我想通过调用“button.setOnClickListener”内的方法来确保我的代码尽可能整洁干净,而不是将所有内容都放入该部分。

MainActivity : AppCompatActivity() {

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

        val button = findViewById(R.id.button) as Button
        var count = 0
        val textView = findViewById(R.id.textView) as TextView

        button.setOnClickListener{
            count = count+1
            textView.text = count.toString()
        }
    }
}

第一个代码是否有任何修复,或者我是否必须满足于第二个代码?

class MainActivity : AppCompatActivity() {

    private var count = 0
    private var button: Button? = null
    private var textView: TextView? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button = findViewById(R.id.button)
        textView = findViewById(R.id.textView)
        button?.setOnClickListener {
            buttonAction()
        }
    }

    private fun buttonAction() {
        count += 1
        textView?.text = count.toString()
    }
}

您的应用程序崩溃的原因是您试图通过在 onCreate.

之前调用它们来分配(尚)不存在的视图(按钮和文本视图)
val button = findViewById(R.id.button) as Button
val textView = findViewById(R.id.textView) as TextView
override fun onCreate(savedInstanceState: Bundle?) { ...

只需将此行放在 setContentView(R.layout.activity_main) 之后的 onCreate 内。

你可以把它想象成在见到你朋友之前试着握他的手。

关于让代码干净,我不会太担心,你的第二个解决方案对初学者来说已经足够好了。

不确定您是否知道Android Basics in Kotlin course,但如果您按部就班地进行,它会对您有很大帮助。

为了给你一个答案,这里有一个代码

class MainActivity : AppCompatActivity() {

var count = 0

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

    val button = findViewById(R.id.button) as Button
    val textView = findViewById(R.id.textView) as TextView

    button.setOnClickListener{
        buttonAction()
        textView.text = count.toString()
    }
}

fun buttonAction(){
    count += 1
   }
}

这不是最流畅的解决方案,但正如我所说,它已经足够好了