Android: why is my OnKeyListener() not called?

前端 未结 3 1700
情话喂你
情话喂你 2021-01-01 11:33

I defined an EditText-field and I want to be informed when the user edits that fields. So I thought: simple - I add an OnKeyListener and so I did. But even though the text f

相关标签:
3条回答
  • 2021-01-01 11:40

    You say that you're dealing with an EditText, but your code refers to a TextView. My guess is that you have an EditText in your layout XML files, but you're referring to this newly created TextView in your code, which is in fact not even in the app's UI at all.

    If there is already an EditText in your layout XML file, then you need to get a pointer to it in your Java code, probably using the findViewById() method. Then add your OnKeyListener to that EditText.

    Defining your layout in XML actually makes a lot more sense (at least in many, if not most, cases) than defining it one component at a time and then adding each those components to the UI, like you do in Swing. But it takes some getting used to, no question.

    0 讨论(0)
  • 2021-01-01 11:55

    I had the exact same problem, but on only 1 of my Android apps and I never did figure out what the difference was.

    My solution though was to do what Mayra suggested and add a TextWatcher to handle the TextChanged events. So it works no matter how the text entry occurs.

    editName.addTextChangedListener(new TextWatcher () {
            public void afterTextChanged(Editable s) {
                Button btnSave = (Button)findViewById(R.id.btnSaveToon);
                if(s.length() > 0)
                    btnSave.setEnabled(true);
                else
                    btnSave.setEnabled(false);
            }
    
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                // TODO Auto-generated method stub
            }
    
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub
            }
    
        });
    

    Works like a charm in the emulator and on my HTC Inspire

    0 讨论(0)
  • 2021-01-01 12:01

    Are you using the soft keyboard (ime) to type in the edit text? I believe that the onKeyListener only gets invoked with events from the hardware keyboard. You are better off using the TextWatcher if you can. onKeyListener not working with soft keyboard (Android)

    0 讨论(0)
提交回复
热议问题