单击任何按钮时,应用程序停止运行,错误提示找不到方法

时间:2018-08-13 18:00:23

标签: android kotlin

我正在学习Kotlin,最近遇到了一个问题。当我单击应用程序中的任何按钮时,就会出现类似标题所示的错误。这是完整的错误代码

  java.lang.IllegalStateException: Could not find method buRequestEvent(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'buRequest'
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:423)
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:380)
    at android.view.View.performClick(View.java:5646)
    at android.view.View$PerformClick.run(View.java:22473)
    at android.os.Handler.handleCallback(Handler.java:761)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:156)
    at android.app.ActivityThread.main(ActivityThread.java:6523)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

我尝试了许多其他问题的修复程序,但大多数都是Java编写的,而我正在Kotlin编程。他们都还没有工作。

这是其中一个按钮的代码

来自 MainActivity.kt

 protected fun buRequestEvent(view: View){
        var userEmail = etEmail.text.toString()
        myRef.child("Users").child(splitString(userEmail)).child("Request").push().setValue(myEmail)
    }

我有一个大概的想法,问题可能是由于项目文件中的导入,所以这是导入列表

来自 MainActivity.kt

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.Toast
import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import kotlinx.android.synthetic.main.activity_main.*
import java.util.*
import kotlin.collections.HashMap

P.S。 -我已经检查了XML文件,按钮上添加了onClick属性

来自 activity_main.xml

<Button
            android:id="@+id/buRequest"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="buRequestEvent"
            android:text="REQUEST" />

1 个答案:

答案 0 :(得分:3)

问题是,onclick方法应具有public访问修饰符,因此请使用

 public fun buRequestEvent(view: View){
        var userEmail = etEmail.text.toString()
        myRef.child("Users").child(splitString(userEmail)).child("Request").push().setValue(myEmail)
    }

来自docs

  • 公开// //违反此处
  • 返回空白
  • 将视图定义为其唯一参数(将是被单击的视图)