on Samsung phones, unlike other android devices, the code presented below does not work, why?

114 Views Asked by At

I create a restriction on entering text in the EditText field via OnKeyListener. This code works on all other devices except Samsung.

For some reason, the output of key codes on the Samsung device does not work.

Need to edit real-time input.

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

There are 1 best solutions below

3
On

That's because as per this document's setOnClickListener only works when hardware key press. I wonder because this code is working on other devices. I don't know why.

So, you can use addTextChangeListener instead of setOnClickListerner to resolve this issue.

Try and let me know this works or not. Thanks.