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;它將響應與編輯文本交互的所有觸摸事件。

我沒有立即看到代碼中會失敗的任何內容,但可能會看到它是否會使用不同的觸發器。此代碼應該響應用戶點擊「完成」或「輸入」鍵。

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

要了解你要查找的內容,您可以提供任何錯誤日誌或任何可能告訴我們什麼錯一個更好的主意嗎?