-1

ユーザーが入力を変更するたびに再計算しようとしているので、TextWatcherを使用しました。テキストが変更されたときにアプリケーションが起動したときに計算され、新しい値を入力したときに再計算されません。誰かが私が間違っていることを教えてもらえますか?「onTextChanged」の使用は正しいので、計算全体をそのプロシージャに入れる必要がありますか、それとも変更する変数1と2を呼び出すだけですか?スピナーは無視してください。前もって感謝します。

パブリッククラスAndroidActivityはActivityを拡張し、TextWatcherを実装します{

  private Spinner spinner1; 

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.pounds);
    addListenerOnSpinnerItemSelection();

    int one = 0;
    int two = 0;



    try{
      EditText one100lbs = (EditText) findViewById(R.id.one100lbs);
      one = Integer.valueOf(one100lbs.getText().toString().trim());
    }
    catch (NumberFormatException e)
    {
      one = -1;
    }

    try{
      EditText tenPounds = (EditText) findViewById(R.id.tenPounds);
      two = Integer.valueOf(tenPounds.getText().toString().trim()); 
    }
    catch (NumberFormatException e)
    {
      two = -1;
    }

    int result = one + two;

    TextView textView = (TextView) findViewById(R.id.editText1);
    textView.setText(String.valueOf(result)); 




}

//create spinner 
public void addListenerOnSpinnerItemSelection() {
    spinner1 = (Spinner) findViewById(R.id.other_spinner);
    spinner1.setOnItemSelectedListener(new CustomOnItemSelectedListener());
  }

@Override
public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
}

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

    int one = 0;
    int two = 0;

    try{
      EditText one100lbs = (EditText) findViewById(R.id.one100lbs);
      one = Integer.valueOf(one100lbs.getText().toString().trim());
    }
    catch (NumberFormatException e)
    {
      one = -1;
    }

    try{
      EditText tenPounds = (EditText) findViewById(R.id.tenPounds);
      two = Integer.valueOf(tenPounds.getText().toString().trim()); 
    }
    catch (NumberFormatException e)
    {
      two = -1;
    }

    int result = one + two;

    TextView textView = (TextView) findViewById(R.id.editText1);
    textView.setText(String.valueOf(result)); 
}

}

4

1 に答える 1

0

とのバインディングが欠落しているようtextviewですTextWatcher

textviewあなたはとバインドするようなことをする必要がありますTextWatcher

text = (EditText)findViewById(R.id.yourTextField);
text.addTextChangedListener(this);

簡単な例については、このチュートリアルをお読みください。

于 2013-01-15T22:34:22.110 に答える