2013-05-10 140 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