2013-07-25 61 views
0

我期待制作將一個單位轉換爲另一個單位(如貨幣)的應用程序。所以它由2個編輯文本組成。一個用戶輸入值,另一個輸入結果。現在,在這裏,我不想使用「轉換」按鈕將值放入第二個編輯文本中,我希望轉換後的值出現在第二個編輯文本中,並將其輸入到第一個值中。我怎樣才能做到這一點? 謝謝Android如何實時更改edittext的內容

回答

0

爲此使用TextWatcher。設置它的EditText用戶類型:

myEditText1.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void afterTextChanged(Editable s) { 
         String value = s.toString(); 

         // Perform computations using this string 
         // For example: parse the value to an Integer and use this value 

         // Set the computed value to the other EditText 
         myEditText2.setText(computedValue); 
     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(final CharSequence s, int start, int before, int count) {    

     } 

    }); 

編輯1

檢查空字符串""

myEditText1.addTextChangedListener(new TextWatcher() { 

    @Override 
    public void afterTextChanged(Editable s) { 
     String value = s.toString(); 

     if (value.equals("")) { 
      myEditText1.setText("0"); 

      // You may not need this line, because "myEditText1.setText("0")" will 
      // trigger this method again and go to else block, where, if your code is set up 
      // correctly, myEditText2 will get the value 0. So, try without the next line 
      // and if it doesn't work, put it back. 
      myEditText2.setText("0"); 
     } else { 

      // Perform computations using this string 
      // For example: parse the value to an Integer and use this value 

      // Set the computed value to the other EditText 
      myEditText2.setText(computedValue); 
     } 
} 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

    } 

    @Override 
    public void onTextChanged(final CharSequence s, int start, int before, int count){    

    } 

}); 
+0

是這個工程。但例如我輸入的美元價值被轉換爲盧比爲23.它給出了正確的輸出。然後如果我按後退按鈕將其更改爲首先刪除'3'。然後最後如果我嘗試刪除'2',那麼它崩潰。如果我清空第一個編輯文本,我希望它變爲0美元和0盧比。我怎麼做? –

+0

是的,發生這種情況是因爲'myEditText1'內的文本發生更改時,會觸發'onTextChanged(CharSequence,int,int,int)'。你必須檢查空字符串'「」'。請參閱上面的**編輯1 **。 – Vikram

+0

@ShivamBhalla你可能會得到一個'NumberFormatException'。 **編輯1 **以上應解決您的問題。 – Vikram