Android 创建对象实现接口时出错:该类没有';我没有构造函数

Android 创建对象实现接口时出错:该类没有';我没有构造函数,android,android-studio,kotlin,Android,Android Studio,Kotlin,我今天刚刚试着在Kotlin开发一个新的应用程序,可以使用截击从任何网站获取数据。我在创建StringRequest实例时遇到了一个问题,我不知道如何解决它 我在创建对象Response.Listener和Response.ErrorListener时遇到此错误: val stringRequest = StringRequest(Request.Method.GET, url, object: Response.Listener<String> {

我今天刚刚试着在Kotlin开发一个新的应用程序,可以使用截击从任何网站获取数据。我在创建
StringRequest
实例时遇到了一个问题,我不知道如何解决它

我在创建对象
Response.Listener
Response.ErrorListener
时遇到此错误:

val stringRequest = StringRequest(Request.Method.GET, url,
        object: Response.Listener<String> {
            override fun onResponse(response:String) {
                // Display the first 500 characters of the response string.
                textView.setText("Response is: " + response.substring(0, 500))
            }
        }, object: Response.ErrorListener {
            override fun onErrorResponse(error:VolleyError) {
                textView.setText("That didn't work!")
            }
        })
该类没有构造函数

代码如下:

class MainActivity : AppCompatActivity() {

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

        Btn.setOnClickListener {
            val queue = Volley.newRequestQueue(this)
            val url = "http://www.google.com"
            val stringRequest = StringRequest(Request.Method.GET, url,
                    object:Response.Listener<String>() {
                        override  fun onResponse(response:String) {
                            // Display the first 500 characters of the response string.
                            textView.setText("Response is: " + response.substring(0, 500))
                        }
                    }, object:Response.ErrorListener() {
                        override fun onErrorResponse(error:VolleyError) {
                            textView.setText("That didn't work!")
                        }
                    })
            queue.add(stringRequest)
        }
    }
}
class MainActivity:AppCompatActivity(){
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Btn.setOnClickListener{
val queue=Volley.newRequestQueue(此)
val url=”http://www.google.com"
val stringRequest=stringRequest(Request.Method.GET,url,
对象:Response.Listener(){
重写响应(响应:字符串){
//显示响应字符串的前500个字符。
setText(“响应为:”+Response.substring(0500))
}
},对象:Response.ErrorListener(){
覆盖错误响应(错误:截击错误){
setText(“那没用!”)
}
})
添加(stringRequest)
}
}
}

提前谢谢。

创建实现接口的对象时,不需要大括号
()
,因为接口没有构造函数。另一方面,当创建扩展类的对象时,需要大括号。例如:

interface MyListener {
    fun success()
}

abstract class MyAbstractClass {
    abstract fun fail()
}

//Create an object which extends MyAbstractClass and implements MyListener
val impl = object: MyAbstractClass(), MyListener {
    override fun success() { TODO() }
    override fun fail() { TODO() }
}
因此,您需要删除
Response.Listener
Response.ErrorListener
的大括号:

val stringRequest = StringRequest(Request.Method.GET, url,
        object: Response.Listener<String> {
            override fun onResponse(response:String) {
                // Display the first 500 characters of the response string.
                textView.setText("Response is: " + response.substring(0, 500))
            }
        }, object: Response.ErrorListener {
            override fun onErrorResponse(error:VolleyError) {
                textView.setText("That didn't work!")
            }
        })

注意:目前Kotlin中定义的接口不支持SAM转换。

当您创建实现接口的对象时,不需要大括号
()
,因为接口没有构造函数。另一方面,当创建扩展类的对象时,需要大括号。例如:

interface MyListener {
    fun success()
}

abstract class MyAbstractClass {
    abstract fun fail()
}

//Create an object which extends MyAbstractClass and implements MyListener
val impl = object: MyAbstractClass(), MyListener {
    override fun success() { TODO() }
    override fun fail() { TODO() }
}
因此,您需要删除
Response.Listener
Response.ErrorListener
的大括号:

val stringRequest = StringRequest(Request.Method.GET, url,
        object: Response.Listener<String> {
            override fun onResponse(response:String) {
                // Display the first 500 characters of the response string.
                textView.setText("Response is: " + response.substring(0, 500))
            }
        }, object: Response.ErrorListener {
            override fun onErrorResponse(error:VolleyError) {
                textView.setText("That didn't work!")
            }
        })
注意:目前Kotlin中定义的接口不支持SAM转换