Android 创建对象实现接口时出错:该类没有';我没有构造函数
我今天刚刚试着在Kotlin开发一个新的应用程序,可以使用截击从任何网站获取数据。我在创建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> {
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转换