0

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

编辑文本 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.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;
      }

});
4

3 回答 3

0

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

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

setFocusable(true); //Enable hard keyboard to target view
于 2015-03-06T18:52:46.563 回答
0

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

onKeyListener 不适用于软键盘(Android)

于 2013-05-11T08:48:19.353 回答
0

某些软件键盘不会启动 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

    }
});
于 2013-05-11T08:58:41.787 回答