2012-01-24 63 views
2

目前我正在使用我的onEditTextchanger。格式化我的貨幣。我在想,如果可以在用戶輸入edittext字段的時候調用並運行我的主java中的Calculate函數。 我想它的工作類似的javascript函數onkeyup =「calc(this.form)」 因爲我不知道如何實現這一點。任何想法,將不勝感激。再次感謝您的幫助。On Edittext自動計算

public class CurrencyTextWatcher implements TextWatcher { 

    boolean mEditing; 

    public CurrencyTextWatcher() { 
     mEditing = false; 
    } 

    public void afterTextChanged(Editable s) { 
     // TODO Auto-generated method stub 
     if(!mEditing) { 
      mEditing = true; 

      String digits = s.toString().replaceAll("\\D", ""); 
      NumberFormat nf = NumberFormat.getCurrencyInstance(); 
      try{ 
       String formatted = nf.format(Double.parseDouble(digits)/100); 
       s.replace(0, s.length(), formatted); 
      } catch (NumberFormatException nfe) { 
       s.clear(); 
      } 

      mEditing = false; 
     } 
    } 
    public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 
     // TODO Auto-generated method stub 

    } 

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     // TODO Auto-generated method stub 

    } 
} 

的Java

public class CalcTestActivity extends Activity { 
private EditText txta; 
private EditText txtb; 
private TextView txtc; 
private TextView txtd; 


private double a = 0; 
private double b = 0; 
private double c = 0; 
private double d = 0; 

private Button buttonCalc; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    initControls(); 

    txta.addTextChangedListener(new CurrencyTextWatcher()); 
    txtb.addTextChangedListener(new CurrencyTextWatcher()); 

} 



private void initControls() { 

    txta = (EditText)findViewById(R.id.txta); 
    txtb = (EditText)findViewById(R.id.txtb); 
    txtc = (TextView)findViewById(R.id.txtc); 
    txtd = (TextView)findViewById(R.id.txtd); 

    buttonCalc = (Button)findViewById(R.id.buttonCalc); 
    buttonCalc.setOnClickListener(new Button.OnClickListener() { 

     public void onClick(View v) {calculate(); }});} 

private void calculate() { 
    //textViewResult.setText(addNumbers());    
    a=Double.parseDouble(txta.getText().toString().replace("$", "").replace(",", "")); 
    b=Double.parseDouble(txtb.getText().toString().replace("$", "").replace(",", "")); 
    c=Math.round(a*.88);     
    txtc.setText(GlobalMoney.FormatValue(c)); 
    d=Math.round((a*.87)+(b*.61)*(c*.25)); 
    txtd.setText(GlobalMoney.FormatValue(d)); 
} 

}

回答

3

你可以稱它爲右afterTextChanged(),有沒有你碰到任何問題,這樣做的時候到?

+0

這就是我的想法,只是不知道我會怎麼稱呼它......你會介意給我一個我可以遵循的範例。 – Calvin

+0

明白了。再次感謝。 – Calvin