0

我有一个名为 searchOne 的编辑文本,它有一个 onKeyListener。我想要完成的是一种获取edittext(这是一个搜索查询)中的值然后使用它来构建一个url的方法。我想在用户单击搜索按钮之前执行此操作,因此我的 onClick 操作尽可能少。我在编辑文本框中输入一个名称,然后单击键盘上的下一步进入下一个编辑文本框,logcat 将打印:

searchURLOne 包含:http ://api.themoviedb.org/3/search/person?api_key=bb0b6d66c2899aefb4d0863b0d37dc4e&query=christopher_guest

searchURLOne 包含:http ://api.themoviedb.org/3/search/person?api_key=bb0b6d66c2899aefb4d0863b0d37dc4e&query=christopher_guesthttp://api.themoviedb.org/3/search/person?api_key=bb0b6d66c2899aefb4d0863b0d37dc4e&query=christopher_guest

如您所见,searchURLOne 的第二个也是最后一个值包含两次字符串。任何想法为什么会这样?

searchOne.setOnKeyListener(new View.OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            //make person search url1
            final StringBuilder personSearchURLOne = new StringBuilder(getName.getName1(searchOne)); 
            searchURLOne = personSearchURLOne.toString();
            Log.d("search1", searchURLOne);
            return false;
        }
    });
4

2 回答 2

0

由于某种原因,我遇到了同样的问题 onKeyListners 被调用了两次

休耕这个

setOnclickListner 被初始化两次??

这是我在点击列表中发现的内容被初始化了两次,一个用于按下事件,另一个用于按键事件,因此您需要

放入如下 if 条件:

        searchOne.setOnKeyListener(new View.OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            //make person search url1
            if(event.getAction() == KeyEvent.ACTION_DOWN)
            {
                final StringBuilder personSearchURLOne = new StringBuilder(getName.getName1(searchOne)); 
                searchURLOne = personSearchURLOne.toString();
                Log.d("search1", searchURLOne); 
                return true;
            }
            return false;
        }
    });
于 2013-09-04T10:32:39.923 回答
0

试试这个代码片段

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub

       if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction()==0)
        {
            //your code
            return true;
        }
        return false;
    }
于 2013-09-04T11:44:37.677 回答