2012-01-24 13 views
2

現在、私はonEditTextchangerを使用しています。通貨をフォーマットする。ユーザーがedittextフィールドに入力するたびに、メインJavaからCalculate関数を呼び出して実行することが可能かどうかは疑問です。 私はそれが同様に動作するようにしたいと思いますjavascript function 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

それは私が思ったことです、どうして私がそれを呼ぶのかわかりません...あなたが私に続く可能性のあるexapmpleを与えてもらえますか? – Calvin

+0

ありがとうございます。再度、感謝します。 – Calvin

関連する問題