Android requestFocus()跳过edittext

时间:2015-04-28 18:02:01

标签: android android-edittext

我正在尝试以编程方式指定当用户按下键盘上的下一个按钮时焦点所在的位置。我可以让它为某些人工作,但我有一个案例,其中视图被跳过,它下面的视图成为焦点。

我进入调试器并且焦点确实通过我的视图,但然后跳转到最后一个。下面是我正在谈论的一个小图。

(1) EditText 
(2) AutoCompleteEditText
(3) EditText
(4) EditText
(1) -> (2) is ok
(2) -> (3) doesn't work, it does (2) -> (3) -> (4), where it briefly go to (3)
if I start at (3), then (3) -> (4) is ok.

这就是我设置焦点的方式

view.setOnKeyListener(new OnKeyListener()
{
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event)
    {
        if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER))
        {
            view.clearFocus();
            nextView.requestFocus();

            return true;
        }

        return false;
    }
});

1 个答案:

答案 0 :(得分:1)

view.setOnKeyListener(new OnKeyListener()
    {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event)
        {
            if((event.getAction() == KeyEvent.ACTION_UP) && (keyCode == KeyEvent.KEYCODE_ENTER))
            {
                view.clearFocus();
                nextView.requestFocus();

                return true;
            }

            return false;
        }
    });

找到解决方案。如果其他人遇到此问题,只需将ACTION_DOWN更改为ACTION_UP,这样只有在按下完成后才会触发您的代码。我猜是ACTION_DOWN,有多个调用。但我不确定。