android - 同时写入 3 个 edittext 字段

标签 android

我正在编写一个用于绘制图形的计算器。我正在使用 3 个 editText;第一个和第二个是极值,第三个是函数。我不需要键盘,所以我将它隐藏起来并使用我自己的按钮,但是当我在一个框中输入例如“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");
        }
    });

最佳答案

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

这是您问题的潜在解决方案:监听 edittext1 上的更改,然后简单地将更新的文本设置为 edittext2edittext3。用技术术语来说,这意味着将 addTextChangedListener 设置为 edittext1,然后更新 edittext2edittext3 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: I added the boolean considerChange because each of the methods in addTextChangedListener are recursive.

希望对您有所帮助。编码愉快!

关于android - 同时写入 3 个 edittext 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56819793/

相关文章:

安卓,保存的数据即使我卸载应用程序也不会被删除

java - Android Room 在 'incoming foreign key list' 中获取 'embedded entity' 中的元素计数?

Android - VideoView 在 HDMI 模式下忽略 LayoutParams

android - 避免冗余构建以制作 tessaract android 库 && 将 tessaract 库链接到 c++ NDK

java - 我如何设置 GIF 图像全屏 Android

java - Android 版本控制错误。 fragment 中的主题包装器错误

android - 我如何知道是否已调用 onSaveInstanceState() 以便我可以避免 IllegalStateException?

java - 如何在谷歌登录另一个 Activity 后保存谷歌个人资料

java - Dagger 在 ModelView 中注入(inject) Context

安卓 M : VoIP, JAINSIP,SipStack;在启用 tls 的情况下创建监听点时出现不一致的 SipProvider 异常