-1

私の要件は次のとおりです。複数のテキストボックス(EditText)からデータを取得し、それを計算して別のテキストボックスに表示する必要があり EditTextます。どうすれば可能ですか?前述したように、自動的に押すボタンはありません。合計ボックスに表示する必要があります。

これを参照しましたが、ループの後、変数をグローバルに宣言した値を取得していませんが、テキストボックスの値も取得していません。

EditText et1, et2, etTot;
int x, y, tot;
et1 = (EditText) findViewbyId(R.id.edittext1);
et2 = (EditText) findViewbyId(R.id.edittext2);
etTot = (EditText) findViewbyId(R.id.edittextTot);

et1.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
                              int count) {
        x = Integer.parseInt(et1.getText().toString().trim());
        System.out
                .println("AMOUNT IS " + et1.getText().toString());

    }

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

    }

    public void afterTextChanged(Editable s) {

    }
});

//same as for et2......

tot = x + y;

etTot.setText(tot.toString());
4

2 に答える 2

1

TextWatcherを実装するクラスを使用して、次のメソッドをオーバーライドできます。

    @Override
        public void afterTextChanged(final Editable editable) {
            // check if user has filled some value in all editTexts
        }


        @Override
        public void beforeTextChanged(final CharSequence string,
                final int start, final int count, final int after) {
        }


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

上記のコードを最後editTextに使用し、すべてeditTextsに何らかの値が含まれているかどうか、つまり「」または。としての値がないかどうかを確認しますnull。はいの場合は、これらからすべてのテキストを取得し、editTexts必要なものを計算します。

于 2012-06-06T08:33:26.563 に答える
1
//global variable
EditText et1,et2,etTot;
int x,y,tot;

// in 0nCreat()
et1 = (EditText)findViewbyId(R.id.edittext1);
et2 = (EditText)findViewbyId(R.id.edittext2);
etTot = (EditText)findViewbyId(R.id.edittextTot);


et1.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
    int count) {
        <Activity_NAME>.this.updateValue();
    }

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

    public void afterTextChanged(Editable s) {
    }
    });

et2.addTextChangedListener(new TextWatcher() {

    public void onTextChanged(CharSequence s, int start, int before,
    int count) {
        <Activity_NAME>.this.updateValue();

    }

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

    }

    public void afterTextChanged(Editable s) {

    }
    });


//in class       
private void updateValue(){
    String str1 = et1.getText().toString();
    String str2 = et2.getText().toString();

    if(null!=str1 && str1.lenght()>0 && null!=str2 && str2.lenght()>0)                  
    {
        try{
            x= Integer.parseInt(str1.trim());
            y= Integer.parseInt(str1.trim());

            tot = x + y; 
            if(null!=etTot)
                etTot.setText(tot+"");
            else 
                Toast.makeText(this,"etTot is null ",Toast.LENGHT_SHORT).show();
            }catch (NumberFormatExcption nfe){}
        }

    }
于 2012-06-06T08:46:10.247 に答える