同时写入3个edittext字段

时间:2019-06-29 18:10:49

标签: android

我正在写一个用于绘制图形的计算器。我正在使用3 editTexts;第一个和第二个用于极限值,第三个用于函数。我不需要键盘,因此我将其隐藏并使用自己的按钮,但是当我在一个框中输入例如“ 11”时,它将在另一个框中显示。 我将对任何有用的建议感到满意。 a part of code

public void disableButtonClick(EditText txt) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        txt.setRawInputType(InputType.TYPE_NULL);

        txt.setShowSoftInputOnFocus(false);
    }
    else {
        txt.setRawInputType(InputType.TYPE_NULL);
        txt.setTextIsSelectable(true);
    }
}

    editText1 = (EditText) findViewById(R.id.edittext1);
    editText2 = (EditText) findViewById(R.id.edittext2);
    editText = (EditText) findViewById(R.id.edittext3);
    //hide soft keyboard  :
    disableButtonClick(editText);
    disableButtonClick(editText1);
    disableButtonClick(editText2);
  button0.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            editText1.setText(editText1.getText()+"0");
            editText2.setText(editText2.getText()+"0");
            editText.setText(editText.getText()+"0");
        }
    });

    button1.setOnClickListener(new View.OnClickListener() {
        @SuppressLint("SetTextI18n")
        @Override
        public void onClick(View v) {
            editText1.setText(editText1.getText()+"1");
            editText2.setText(editText2.getText()+"1");
            editText.setText(editText.getText()+"1");
        }
    });

2 个答案:

答案 0 :(得分:1)

通常,对于您创建的任何EditTextaddTextChangedListener都会监听对EditText内容的更新/更改。简单来说,您可以使用addTextChangedListener来检测是否对EditText中的文本进行了任何更改。

以下是您可能遇到的问题的解决方案:聆听 edittext1 上的更改,只需将更新后的文本设置为 edittext2 edittext3 。用技术术语来说,这意味着将addTextChangedListener设置为 edittext1 ,然后更新 edittext2 edittext3 随时更改 edittext1 中的文本。这是实现:

editText1.addTextChangedListener(new TextWatcher() {

    boolean considerChange = false;

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

    }

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

    }

    @Override
    public void afterTextChanged(Editable s) {
        if (considerChange){ 
            editText2.setText(editText1.getText().toString());
            editText.setText(editText1.getText().toString());
            }
            considerChange = !considerChange; // flip the boolean
    }
});
  

PS:我添加了布尔值considerChange,因为每种方法   addTextChangedListener中的内容是递归的。

我希望这会有所帮助。快活的编码!

答案 1 :(得分:0)

尝试

button0.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        editText1.setText("write everything");
    }
});

editText1.addTextChangedListener(new TextWatcher() {
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        editText2.setText(editText1.getText() + "");
        editText.setText(editText1.getText() + "");
    }

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

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

添加导入

import android.text.Editable;
import android.text.TextWatcher;