Android onClick&;在increment()中放置什么参数?

Android onClick&;在increment()中放置什么参数?,android,kotlin,Android,Kotlin,我希望每次单击“+”时,金额增加1 但现在当我点击“+”时,它显示如下 问题(A):activity\u main.xml中的android:onClick=“increment”/>中的增量为红色 问题(B):我知道我应该在increment()的()内写些东西,我已经尝试了(1)increment(view:view?=>红色警报:参数“view”从未被使用过,但问题(A)将被解决 增量(视图:视图?是从java代码修改而来的 public void submitOrder(Vi

我希望每次单击“+”时,金额增加1

但现在当我点击“+”时,它显示如下

问题(A):activity\u main.xml中的android:onClick=“increment”/>中的增量为红色

问题(B):我知道我应该在
increment()
的()内写些东西,我已经尝试了(1)
increment(view:view?
=>红色警报:
参数“view”从未被使用过,但问题(A)将被解决

增量(视图:视图?
是从java代码修改而来的

    public void submitOrder(View view) {
        display(1);
    }
如果我将(视图:视图?)替换为其他内容,则红色警报:
参数“视图”从未使用过
消失。 (2)
increment(数字:Int)
(3)
increment()
它们都不起作用。(2) (3)将导致
不幸的是,订单咖啡已停止。

这是我的主要活动

class MainActivity : AppCompatActivity() {
    var amount: Int=2
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    fun increment() {
        amount++
        display(amount)
    }
    //This method is called when the order button is clicked.
    fun submitOrder() {
        var amount: Int=2
        display(amount)
        displayPrice(amount*10)
    }
    fun decrement() {
        amount--
        display(amount)
    }
    //This method displays the given quantity value on the screen.
     private fun display(number: Int) {
        val amountTextView = findViewById<View>(R.id.amount_text_view) as TextView
        amountTextView.text = "" + number
    }
    /**
     * This method displays the given price on the screen.
     */
    private fun displayPrice(number: Int) {
        val priceTextView = findViewById<View>(R.id.price_text_view) as TextView
        priceTextView.setText(NumberFormat.getCurrencyInstance().format(number))
    }
}
class MainActivity:AppCompatActivity(){
风险值金额:Int=2
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
乐趣增量(){
数量++
显示(金额)
}
//单击订单按钮时调用此方法。
有趣的提交者(){
风险值金额:Int=2
显示(金额)
显示价格(金额*10)
}
趣味减量{
数量--
显示(金额)
}
//此方法在屏幕上显示给定的数量值。
私人娱乐展示(编号:Int){
val amountTextView=findViewById(R.id.amount\u text\u view)作为文本视图
amountTextView.text=”“+数字
}
/**
*此方法在屏幕上显示给定的价格。
*/
私人娱乐价格(编号:Int){
val priceTextView=findviewbyd(R.id.price_text_view)作为TextView
priceTextView.setText(NumberFormat.getCurrencyInstance().format(数字))
}
}

如果在onClick方法中不使用view参数没有关系,您可以忽略警告-它只是一个清理提示,应该是黄色而不是红色。(在这种情况下也是错误的,因为您知道您需要
视图
参数!但是编译器不知道XML中的
onClick
属性,所以它认为它未使用)

如果它说应用程序已经停止,那就是崩溃,应该有一个错误日志,说明它崩溃的位置和原因-你所遇到的崩溃可能是因为你正在更改
onClick
函数的签名。
onClickListener
有一个
视图
参数,因此无论使用什么函数,都必须匹配该参数

因为您在XML文件中说“查找一个名为this的函数,并将其用作单击侦听器”,所以在您运行应用程序并尝试单击某个对象之前,它不知道该函数将是什么。如果您想改为使用代码,可以执行以下操作:

plusButton.setOnClickListener() { increment() }

从技术上讲,它仍然将
视图
作为一个默认名为
it
的变量传入,但我们不使用它,因此可以忽略它!我个人更喜欢在代码中这样做,在XML中设置它有时有点脆弱,没有帮助(就像你已经发现的那样),但这只是个人的选择,真的

如果你不在
onClick
方法中使用
view
参数没有关系,你可以忽略警告(这只是一个清理提示,应该是黄色而不是红色)。你的应用程序停止的原因是因为它正在崩溃,所以你需要从Logcat发布stacktrace(类似于由
引起的异常以及随后发生的一切,这将解释出问题所在)。但听起来好像只是你的
增量
函数没有
查看
参数?你很快就解决了我的问题。你应该发布答案,我会接受你的答案。实际上我写了
增量(查看:查看?)
它崩溃了,所以我认为我写的是错的。谢谢你的快速帮助。初学者总是怀疑自己,这让他们很沮丧。不用担心!有很多这样的小东西需要学习,只是经验而已stacktrace是什么?stacktrace是位于Android Studio scr底部的Logcat选项卡中的一个报告即使在程序执行过程中显示了活动堆栈帧随时间的变化。您的回答中有一些我不明白的地方。(1)我没有一个函数调用它。(2)plusButton.setOnClickListener(){increment()}传入的
视图是什么,它是什么?(3)在哪里放置
plusButton.setOnClickListener(){increment()}
我的意思是在你的XML中,你只是给它一个要使用的函数名,但它不知道布局将用于什么
活动
片段
,因此在应用程序实际运行之前,它无法检查具有该名称的函数是否存在。如果你想尝试用代码进行设置,你可能应该遵循像这样的教程:至少知道这一点很重要-你需要在某个时候做这件事!我感谢你花时间回答我的问题。既然你花了时间,你一定认为我的问题有一些价值。你能投票支持这个问题吗?这个问题将来也会对其他人有利。