2013-06-24 38 views
1

當我編輯一個文本字段時,我想要另一個文本字段進行更改。Android EditText更改其他EditText值

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 - 我是個白癡。我聲明EditText editTextAmount是一個類級別的變量,我應該在getView()方法中聲明它爲final EditText editTextAmount。謝謝各位的幫助。您的答案將在未來幫助我解決錯誤。

+0

您是否獲得任何異常或錯誤信息?您是否驗證過,值爲 * Integer.parseInt(arg0.toString()'是您期望的值? – codeMagic

+0

是的,如果我調用Sytem.out.print的值 * Integer.parseInt(arg0。 toString())和editTextAmount.getText() – labatyo

回答

2

我認爲你需要在onTextChanged()而不是afterTextChanged()中實現你的代碼。從docs

這種方法被調用來通知您,S中,在啓動開始計數 字符剛剛取代了之前有 長度舊文本。


在一個側面說明,你應該傳遞值之前檢查的parseInt輸入。它在拋出無效號碼的情況下拋出異常

1

afterTextChanged()應該沒問題。您確定某些值未正確初始化(例如,值= 0)嗎?

+0

值被正確初始化,即使當我調用System.out.println(editTextAmount.getText())時,它打印出正確的值,它只是不會改變屏幕 – labatyo

+1

您可以嘗試直接從EditText獲取內容,而不是使用可編輯並檢查,如果它正確設置值。 – th0m4d

2

我假設你正在試圖做的是輸入一個數字到editTextCount,該數字將乘以value並寫入最終計算editTextAmount。如果是這樣的話,爲什麼不使用,

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

它真的很容易使用Editable對象來創建你在哪裏無限呼叫afterTextChanged的inifinite遞歸的情況下,afterTextChanged被調用,如果它正在偵聽,或者如果其對象Editable被更改。因此,如果更改afterTextChanged中的Editable對象,它將遞歸調用它的自身。

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

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

下面是我打印所有值時得到的值:0.01 editTextCount:50.0 金額:0.5 editTextAmount:0。 5。它表示editTextAmount的值已更改,但它並未出現在屏幕上 – labatyo

+0

XML中是否定義了這些「EditText」對象?如果是的話,你有沒有正確連接到XML對象的'editTextAmount'的java'View'?既然你可以從'editTextCout'獲得值,那麼我將假設如果用XML定義的話,它是正確連接的。 –