на телефонах Samsung, в отличие от других устройств Android, приведенный ниже код не работает, почему? - PullRequest
0 голосов
/ 01 июля 2019

Я создаю ограничение на ввод текста в поле EditText через OnKeyListener. Этот код работает на всех других устройствах, кроме Samsung.

По некоторым причинам вывод кодов клавиш на устройстве Samsung не работает.

Необходимо редактировать ввод в реальном времени.

massEditText.setOnKeyListener(object: View.OnKeyListener{
            override fun onKey(v: View, keyCode: Int, event: KeyEvent): Boolean
            {
                Mark.setText(event.action.toString())
                if(event.action == KeyEvent.ACTION_DOWN)
                {
                    provider.setText(keyCode.toString())
                    if(keyCode == KeyEvent.KEYCODE_DEL)
                        return false;

                    if(keyCode == KeyEvent.KEYCODE_0 && Mass.text.toString().length < 1)
                        return true


                    val number: String = (keyCode - 7).toString();

                    if(Mass.text.toString().length > 0)
                    {
                        var resultNumber: String = "";
                        for(i in Mass.text.toString())
                        {
                            resultNumber+=i;
                        }
                        resultNumber+=number;
                        if(resultNumber.toInt() !in 1..40)
                        {
                            return true;
                        }
                    }
                }
                return false;
            }
        })

1 Ответ

0 голосов
/ 01 июля 2019

Это потому, что согласно этот документ setOnClickListener работает только при нажатии аппаратной клавиши. Мне интересно, потому что этот код работает на других устройствах. Я не знаю почему.

Таким образом, вы можете использовать addTextChangeListener вместо setOnClickListerner для решения этой проблемы.

Попробуйте и дайте мне знать, работает это или нет. Благодарю.

...