Поэтому я попытался использовать editText в качестве ввода для записи пользователем даты (из диапазона 1900-2200), используя поле editText, которое я установил в цифру c, например:
idData.inputType = InputType.TYPE_NUMBER_FLAG_SIGNED or InputType.TYPE_CLASS_NUMBER
idData это идентификатор поля ввода. Я хотел, чтобы мое приложение открывало намерение (PelniewRoku) с этим номером в качестве параметра (rok) - поэтому, если число не соответствует ограничению, я не запускал намерение, просто показывая предупреждение пользователя, сохраненное в значениях, как «предупреждение». Код для слушателя (на основе этого простого урока: https://www.tutorialkart.com/kotlin-android/android-edittext-on-text-change/) выглядит следующим образом:
[79] idData.addTextChangedListener(object: TextWatcher
{
override fun afterTextChanged(s: Editable?)
{
}
override fun beforeTextChanged(s: Int, start: Int, count: Int, after: Int)
{
}
override fun onTextChanged(s: Int, start: Int, before: Int, count: Int) {
if (s<2201 and s>1899)
{
var pelnie: Intent = Intent(applicationContext, PelniewRoku::class.java)
pelnie.putExtra("algorytm", rodzaj)
pelnie.putExtra("rok", s)
startActivity(pelnie)
}
else
{
Toast.makeText(this, R.string.warning, Toast.LENGTH_LONG).show()
}
}
})
(я также добавляю номер начальной строки этого кода, чтобы облегчить поиск места ошибок)
После попытки запуска я получаю следующие ошибки, но они кажутся мне довольно расплывчатыми (по крайней мере, независимо от того, что я на самом деле должен делать):
[project and kotlin file path]: (79, 39): Object is not abstract and does not implement abstract member public abstract fun beforeTextChanged(p0: CharSequence!, p1: Int, p2: Int, p3: Int): Unit defined in android.text.TextWatcher
[project and kotlin file path]: (85, 13): 'beforeTextChanged' overrides nothing
[project and kotlin file path]: (89, 13): 'onTextChanged' overrides nothing
[project and kotlin file path]: (90, 34): The integer literal does not conform to the expected type Boolean
[project and kotlin file path]: (99, 27): None of the following functions can be called with the arguments supplied:
public open fun makeText(p0: Context!, p1: CharSequence!, p2: Int): Toast! defined in android.widget.Toast
public open fun makeText(p0: Context!, p1: Int, p2: Int): Toast! defined in android.widget.Toast
Я делаю все импортные операции - по крайней мере, все, предложенные компилятором.