【问题标题】:Error to updating EditText更新 EditText 时出错
【发布时间】:2013-05-10 09:41:26
【问题描述】:

在某些设备上,使用此代码,在 EditText from_quantity 中插入要转换的值期间,EditText to_quantity 不会实时更新。可能是什么问题?

从_数量编辑文本:

from_quantity.setOnKeyListener(new OnKeyListener(){

    public boolean onKey(View v, int keyCode, KeyEvent event){

        try{
        if(!(Double.isNaN(Double.valueOf(from_quantity.getText().toString())))){
                                                  convert(from_quantity.getText().toString(), "to");
        }
        }catch(NumberFormatException e){
            Log.d("error", e.toString());
        }
            return false;
        }
        });

            from_quantity.setOnTouchListener(new OnTouchListener(){

                            public boolean onTouch(View v, MotionEvent event) {
                                    //Clear Quantities
                                    from_quantity.setText("");
                                    to_quantity.setText("");
                                    return false;
                            }

            });

编辑文本到_数量:

to_quantity.setOnKeyListener(new OnKeyListener() {
     public boolean onKey(View v, int keyCode, KeyEvent event) {
         try{
            if(!(Double.isNaN(Double.valueOf(to_quantity.getText().toString())))) {
                  convert(to_quantity.getText().toString(), "from");
            }
          } catch(NumberFormatException e) {
               Log.d("error", e.toString());
          }
          return false;
     }
});


to_quantity.setOnTouchListener(new OnTouchListener(){
      public boolean onTouch(View v, MotionEvent event) {
          //Clear Quantities
          from_quantity.setText("");
          to_quantity.setText("");
          return false;
      }

});

【问题讨论】:

  • 你想实现什么兄弟?您可以在编辑文本上使用焦点更改侦听器,并在编辑文本获得或失去焦点时实时处理。

标签: android android-layout android-intent android-listview


【解决方案1】:

如果您使用设备的软键盘,则不会调用 OnKeyListener。您应该使用 TextWatcher。

onKeyListener not working with soft keyboard (Android)

【讨论】:

    【解决方案2】:

    某些软件键盘不会启动 onKey() 事件。创建一个TextWatcher 并将其设置为EditText 的侦听器:

    to_quantity.addTextChangedListener(new TextWatcher() {
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            String text = s.toString() ;
            try{
                if(!(Double.isNaN(Double.valueOf(text)))) {
                    convert(text, "from");
                }
            } catch(NumberFormatException e) {
                Log.d("error", e.toString());
            }
        }
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
    
        }
    });
    

    【讨论】:

    • 但是这样两个EditText,from_quantity和to_quantity不协调,即相加是扭曲的
    • 我不明白不协调是什么意思...在两个EditText 字段中使用TextWatcher,这与您尝试执行的操作相同,只是我使用了@987654326 @ 而不是 OnKeyListener。如果它里面的代码没有做它应该做的事情,那就另当别论了。
    • 实际上,在 from_quantity 中我输入要转换的数字,同时将其转换为 to_quantity。但是使用 TextWatcher,光标与 edidtext to_quantity 不同时
    【解决方案3】:

    如果您想使用软键盘,您需要将 setFocusable 设置为目标视图:

    setFocusableInTouchMode(true); //Enable soft keyboard on touch for target view
    
    setFocusable(true); //Enable hard keyboard to target view
    

    【讨论】:

      猜你喜欢
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 2016-08-27
      • 2014-07-08
      • 1970-01-01
      相关资源
      最近更新 更多