【问题标题】:onKeyListener storing value twiceonKeyListener 两次存储值
【发布时间】:2012-09-18 07:38:39
【问题描述】:

我有一个名为 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;
        }
    });

【问题讨论】:

    标签: java android string stringbuilder


    【解决方案1】:

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

    放纵这个

    setOnclickListner is initialized twice??

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

    输入如下 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;
            }
        });
    

    【讨论】:

      【解决方案2】:

      试试这个代码sn-p

          @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;
          }
      

      【讨论】:

        猜你喜欢
        • 2015-01-14
        • 2012-08-04
        • 2020-04-17
        • 1970-01-01
        • 2017-08-18
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多