2013-05-10 66 views
0

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

编辑文本from_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:

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

}); 
+2

把你的logcat的。 – Riser 2013-05-10 09:42:50

+0

你想达到什么样的兄弟?您可以在编辑文本上使用焦点更改侦听器,并在编辑文本获得或失去焦点时实时执行这些内容。 – 2013-05-10 10:11:57

回答

0

一些软件键盘不启动安其()事件。创建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 

    } 
}); 
+0

但这种方式在两个EditText上,from_quantity和to_quantity,都不能协调,即增加的失真 – bisemanu 2013-05-11 11:11:01

+0

我加了一段代码有关的EditText from_quantity – bisemanu 2013-05-11 11:20:10

+0

我不明白这是什么意思不太协调......使用'TextWatcher'在'EditText'字段中,除了我使用'TextWatcher'而不是'OnKeyListener'外,它和你正在做的一样。如果它里面的代码没有做它应该做的事情,那是另外一回事。 – tbkn23 2013-05-11 11:50:05

0

,如果你想使用软键盘,你需要setFocusable到目标视图:

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

setFocusable(true); //Enable hard keyboard to target view