簡體   English   中英

Android EditText更改其他EditText值

[英]Android EditText change other EditText value

當我編輯一個文本字段時,我希望更改另一個文本字段。

  editTextCount.addTextChangedListener( new TextWatcher( ) {

    @Override
    public void afterTextChanged( Editable arg0 ) {

      if ( arg0.length( ) == 0 ) {
        return;
      }

      editTextAmount.setText( value
          * Integer.parseInt( arg0.toString( ) )+""  );

    }

    @Override
    public void beforeTextChanged( CharSequence arg0, int arg1, int arg2,
        int arg3 ) {
      // TODO Auto-generated method stub

    }

    @Override
    public void onTextChanged( CharSequence arg0, int arg1, int arg2,
        int arg3 ) {
      // TODO Auto-generated method stub

    }

  } );

當我編輯editTextCount時,editTextAmount應該更改,但是什么也沒有發生。

編輯-另外,我忘了提到這是在自定義ArrayAdapter中。 這可能是問題嗎?

Edit2-我是個白痴。 我本應該在getView()方法內將其final EditText editTextAmount聲明為EditText editTextAmount ,將EditText editTextAmount聲明為類級別的變量。 謝謝各位的幫助。 您的回答將幫助我將來解決錯誤。

我認為您需要在onTextChanged()而不是afterTextChanged()實現代碼。 文檔

調用此方法是為了通知您,在s內,從start開始的計數字符剛剛替換了以前具有長度的舊文本。


附帶一提,您應該在傳遞值之前檢查parseInt的輸入。 如果數字無效,則會引發異常

我假設您要嘗試的是在editTextCount鍵入一個數字,然后將該數字乘以value然后將最終計算結果寫入editTextAmount 如果是這種情況,為什么不使用,

editTextAmount.setText(value * Integer.parseInt(editTextCount.getText()));

使用Editable對象創建無限遞歸情況非常容易,在這種情況下,您將無限次調用afterTextChanged ,如果正在監聽的內容或其Editable對象被更改, afterTextChanged調用afterTextChanged 因此,如果您在afterTextChanged更改Editable對象,它將以遞歸方式調用其self。

嘗試打印這些值以識別任何問題可能是值得的:

System.out.println("Value: " + value);
System.out.println("Count: " + Integer.parseInt(editTextCount.getText()));
System.out.println("Amount: " + (value * Integer.parseInt(editTextCount.getText())));

afterTextChanged()應該可以。 您確定某些值未正確初始化(例如value = 0)嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM