【问题标题】:How to get value of EditText on tap of it?如何获得 EditText 的价值?
【发布时间】:2013-08-06 06:37:30
【问题描述】:

我的布局中有 TextView 和 EditText。 TextView 代表价格,EditText 代表数量。当用户在 EditText 中输入某个数字时,我想将价格乘以输入的数字并将其显示在我的 TextView 上。但我无法做到这一点。下面是我的源代码。

        mEditTextQuantity = (EditText) rootView.findViewById(R.id.quantity_edit_text);
        mEditTextQuantity.setFilters(new InputFilter[]
        { new Ipfilters("1", "999") });
        mEditTextQuantity.setText("1");
        int position = mEditTextQuantity.length();
        Editable etext = mEditTextQuantity.getText();
        Selection.setSelection(etext, position);
        Utility.showKeypad(mEditTextQuantity, getActivity());
    mEditTextQuantity.setOnTouchListener(new OnTouchListener()
        {
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                mEditTextQuantity.requestFocus();
                Utility.showKeypad(mEditTextQuantity, getActivity());
                int mtemp;
                mtemp=Integer.parseInt(mEditTextQuantity.getText().toString().trim());  
                NumberFormat nf = NumberFormat.getInstance();
                nf.setMinimumFractionDigits(2);
                double price = Double.parseDouble(mProductPriceTextView.getTag().toString());
                price = price * mtemp;
                mProductPriceTextView.setText(mCurrency + nf.format(price));
                return true; 
            }
        }); 

我也明白我们可以通过 onKeyPreIme 方法来编辑文本但不能这样做。 提前致谢。

【问题讨论】:

  • 到目前为止你得到了什么?出错了?

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


【解决方案1】:

为什么不尝试使用textChangedListener 描述的here?您可以查看文本更改前后的内容,并根据结果修改您的TextView

【讨论】:

    【解决方案2】:

    你可能正在寻找那个......

    edtText.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence s, int start, int before,  int count) {
              int   newPrice = price*Integer.parseInt(edtText.getText().toString());
    
                mProductPriceTextView.setText(""+newPrice);
    
            }
    
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
            }
    
            @Override
            public void afterTextChanged(Editable s) {
    
    
            }
        });
    

    【讨论】:

      【解决方案3】:

      第一个建议:不要使用OnTouchListener;它将响应与编辑文本交互的所有触摸事件。

      我没有立即在您的代码中看到任何会失败的内容,但也许看看它是否可以使用不同的触发器工作。此代码应响应用户点击“完成”或“输入”键。

      mEditTextQuantity.setOnEditorActionListener(new OnEditorActionListener(){
          @Override
          public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
              if(actionId == EditorInfo.IME_ACTION_DONE || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
                  int mtemp;
                  mtemp=Integer.parseInt(mEditTextQuantity.getText().toString().trim());  
                  NumberFormat nf = NumberFormat.getInstance();
                  nf.setMinimumFractionDigits(2);
                  double price = Double.parseDouble(mProductPriceTextView.getTag().toString());
                  price = price * mtemp;
                  mProductPriceTextView.setText(mCurrency + nf.format(price));
                  return true; 
              }
              else
                  return false;
          }//onEditorAction()
      }
      

      为了更好地了解您要查找的内容,您能否提供任何错误日志或任何可能告诉我们出了什么问题的信息?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-01
        • 2020-11-03
        相关资源
        最近更新 更多