在Android Studio Kotlin中显式指定类型

时间:2019-02-16 11:46:57

标签: android xml kotlin

我正在为我的应用程序创建登录页面,它给了我Cannot infer a type of this parameter. Please specify it explicitly错误。

仅在错误和响应内给出错误。任何线索为什么会这样?

我尝试搜索此问题,但找不到。

var rq: RequestQueue = Volley.newRequestQueue(this)
            var sr = StringRequest(Request.Method.GET, url, Response.Listener { response ->
                if(response.equals("0"))
                    Toast.makeText(this, "Login failed.", Toast.LENGTH_LONG).show()
                else

                var i = Intent(this,LoggedinActivity::class.java)
                startActivity(i)
                Toast.makeText(this, "User created successfully.", Toast.LENGTH_LONG).show()
            }, Response.ErrorListener {
                error ->
                Toast.makeText(this, error.message, Toast.LENGTH_LONG).show()
            })
            rq.add(sr)

有什么线索可以解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

可能是因为您在if and else上没有括号。

尝试一下:

val rq: RequestQueue = Volley.newRequestQueue(this)
        val sr = StringRequest(Request.Method.GET, url, Response.Listener { response ->
            if(response == "0") {
                Toast.makeText(this, "Login failed.", Toast.LENGTH_LONG).show()
            }
            else {
                val i = Intent(this, MainActivity::class.java)
                startActivity(i)
                Toast.makeText(this, "User created successfully.", Toast.LENGTH_LONG).show()
            }
        }, Response.ErrorListener {
            error ->
            Toast.makeText(this, error.message, Toast.LENGTH_LONG).show()
        })
        rq.add(sr)

答案 1 :(得分:0)

this应该指的是活动上下文,否则代码会认为它是Response.Listener的附加内容,如user8159708所述,您至少需要在else上加上方括号声明。

val rq: RequestQueue = Volley.newRequestQueue(this)
        val sr = StringRequest(Request.Method.GET, url, Response.Listener { response ->
            if(response == "0") {
                Toast.makeText(this@MainActivity, "Login failed.", Toast.LENGTH_LONG).show()
            }
            else {
                val i = Intent(this@MainActivity, MainActivity::class.java)
                startActivity(i)
                Toast.makeText(this@MainActivity, "User created successfully.", Toast.LENGTH_LONG).show()
            }
        }, Response.ErrorListener {
            error ->
            Toast.makeText(this@MainActivity, error.message, Toast.LENGTH_LONG).show()
        })
        rq.add(sr)

编辑:

根据此post

,kotlin中的正确语法为this@MainActivity

答案 2 :(得分:0)

我已经解决了问题。问题不是thiselse语句。这是因为Android Studio添加了错误的库。如果发生相同问题,请确保已添加这些库。

import com.android.volley.Request
import com.android.volley.RequestQueue
import com.android.volley.Response
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley