如何获得EditText的价值呢?

时间:2013-08-05 14:01:21

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

我的布局中有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方法来实现它,但不能这样做。 提前谢谢。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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) {


        }
    });

答案 2 :(得分:0)

第一个建议:不要使用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()
}

为了更好地了解您正在寻找的内容,您能提供任何错误日志或任何可能告诉我们出现问题的内容吗?