Указание типа явно в Android Studio Kotlin - PullRequest
0 голосов
/ 16 февраля 2019

Я создаю страницу входа для своего приложения, и она выдает ошибку 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)

Проблема возникла из-за того, что я не проверил все квадратные скобки правильно, таким образом, если операторы не работали правильно, и это вызывало ошибку из-за этого.

Приносим извинения за неудобства.Я желаю вам отличной недели впереди.Я проверил первый ответ как правильный.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

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)

Редактировать:

Правильный синтаксис в kotlin this@MainActivity в соответствии с этим post

0 голосов
/ 16 февраля 2019

Это может быть отсутствие скобок вокруг вашего if и 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...