Kotlin строка существует, но не может использовать почти всю функциональность строки - PullRequest
1 голос
/ 30 января 2020

Резюме: у меня есть строка, из которой я могу напечатать и использовать подстроку, но не могу использовать такие атрибуты, как длина или такие функции, как .toInt () или .compareTo (), почему это так?

var s = "20"
val myToast = Toast.makeText(this, s, Toast.LENGTH_SHORT)
myToast.show()
//20

val myToast2 = Toast.makeText(this, s.length, Toast.LENGTH_SHORT)
myToast2.show()
//The app crashes with the error: android.content.res.Resources$NotFoundException: String resource ID #0x2

Я могу вызвать подстроку для строки s, но я не могу вызвать length, toInt (), compareTo (), et c.

Строка явно существует, так как я могу напечатать он и использует подстроку, но если это правда, почему мое приложение выдает ошибку, когда я пытаюсь использовать другие атрибуты и функции из него?

Ответы [ 2 ]

1 голос
/ 30 января 2020

Есть две перегрузки Toast.makeText(). Один принимает String в качестве второго аргумента и отображает эту строку. Другой принимает Int в качестве второго аргумента и отображает любой строковый ресурс, имеющий этот целочисленный идентификатор. (Обычно вы передаете что-то вроде R.string.my_string здесь.)

Когда вы позвоните .length в своей строке, вы получите Int обратно. А это значит, что вы вызываете вторую перегрузку, которая затем ищет строковый ресурс с идентификатором 2. Этого не существует, поэтому вам нужно sh.

Если вы хотите просто отобразить число 2, то вам нужно снова сделать эту строку. Вы можете использовать .toString() или "${s.length}" и т. Д.

0 голосов
/ 30 января 2020

Добавить .toString в конце длины, toInt (), сравнить с () и так далее c. потому что s.length возвращает int: не String

Вот ваш измененный ответ var s = "20" val myToast = Toast.makeText(this, s, Toast.LENGTH_SHORT) myToast.show() // 20

val myToast2 = Toast.makeText(this, s.length.toString(), Toast.LENGTH_SHORT) myToast2.show()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...