1

У меня есть TextView и EditText в моем макете. TextView представляет цену, а EditText представляет количество. Когда пользователь вводит некоторый номер в EditText, я хочу умножить цену на этот введенный номер и отобразить его на моем TextView. Но я не могу этого добиться. Это мой исходный код.Как получить значение EditText при нажатии?

 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 метод редактирования текста, но не в состоянии сделать это. Спасибо заранее.

+0

что вы получили до сих пор? ошибка? –

ответ

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

Почему бы не попробовать использовать textChangedListener, как описано here? Вы можете видеть, что текст был до и после его изменения, и изменить ваш TextView на основе результата.

0

Первое предложение: Не используйте OnTouchListener; он будет реагировать на любые сенсорные события, которые взаимодействуют с текстом редактирования.

Я не вижу ничего в вашем коде, который бы сработал, но, возможно, посмотрим, будет ли он работать с использованием другого триггера. Этот код должен отвечать пользователю, нажав клавишу «done» или «enter».

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() 
} 

Чтобы получить лучшее представление о том, что вы ищете, вы можете предоставить любые журналы ошибок или что-нибудь, что может сказать нам, что происходит не так?

Смежные вопросы