如何覆盖EditText onKey处理程序,但保持正常的EditText行为

时间:2014-01-16 19:17:25

标签: android android-edittext handler

我需要使用EditText字段的内容来限制listView中(匹配)条目的数量。对于每个额外的击键,需要进行新的更有限的listView条目选择。我成功地覆盖了onKey处理程序:

public class MyFragment extends Fragment implements OnKeyListener {
    ...
    public View onCreateView(...
        editText = (EditText) rootView.findViewById(R.id.myEditText);
    editText.setOnKeyListener(this);
        ...
    }

@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
    ...
        handleListViewBehavior();
    }

缺点是我需要自己实现EditText的行为。

我能做什么,所以我可以自己处理ListView,但EditText会处理它自己的行为。

提前致谢!

3 个答案:

答案 0 :(得分:0)

尝试调用超类的onKey()作为方法中的第一件事,然后应用您想要的任何其他操作handleListViewBehavior()

@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
    super.onKey(view, keyCode, event); <-------
    handleListViewBehavior();
}

请注意,我没有对此进行过测试,但我认为它可以帮助你。

答案 1 :(得分:0)

onKey方法是错误的。使用早期的Stackoverflow解决方案可以解决我的问题:

How do listen EditText?

EditText保持它的行为,但您仍然可以检测afterTextChanged方法中的击键。

感谢人们的建议!

答案 2 :(得分:0)

只是返回false,停止“吃”事件。

   public boolean onKey(View view, int keyCode, KeyEvent event) {
        handleListViewBehavior();
        return false;
    }

有关解释,请阅读documentation

Returns
True if the listener has consumed the event, false otherwise.