Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有可能有3个相互改变的编辑文本,这3个编辑文本之间可以互换?_Java_Android_Android Studio - Fatal编程技术网

Java 是否有可能有3个相互改变的编辑文本,这3个编辑文本之间可以互换?

Java 是否有可能有3个相互改变的编辑文本,这3个编辑文本之间可以互换?,java,android,android-studio,Java,Android,Android Studio,这是在安卓工作室 所以我有3个编辑文本,需要在所有3个文本之间互换。它们做数学运算,比如说,它们分别被标记为editText1、editText2和editText3。如果我在editText1和editText2中键入一个数字,它应该更新editText3。如果我在editText2和editText3中键入一个数字,它将更新editText1。然后,我应该能够删除任何EditText之间的任何数据,并动态更改它们,而不会锁定任何EditText实例。我已经能够在一开始就改变其中任何一个,但我

这是在安卓工作室

所以我有3个编辑文本,需要在所有3个文本之间互换。它们做数学运算,比如说,它们分别被标记为editText1、editText2和editText3。如果我在editText1和editText2中键入一个数字,它应该更新editText3。如果我在editText2和editText3中键入一个数字,它将更新editText1。然后,我应该能够删除任何EditText之间的任何数据,并动态更改它们,而不会锁定任何EditText实例。我已经能够在一开始就改变其中任何一个,但我最终锁定了它


是否有可能在不锁定至少一个文本的情况下使其可互换?谢谢

我不知道锁定编辑文本是什么意思,但你可以尝试使用来实现这一点

例如


等等……

我不知道锁定编辑文本是什么意思,但你可以尝试使用来实现这一点

例如


诸如此类……

试试这样的方法

public class watcher implements TextWatcher {
EditText changeAble;
EditText Effector;
public watcher(EditText otherEffector,EditText otherEditor){
    this.Effector =otherEffector;
    this.changeAble = otherEditor;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    //To not change the other editText in case of deleting
    if(!s.toString().isEmpty()){
        changeAble.setText(Integer.valueOf(s)+Integer.valueOf(Effector.getText().toString()));
    }
}

@Override
public void afterTextChanged(Editable s) {



}
}

公共类MainActivity扩展了AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    EditText editText1 = findViewById(R.id.editText);
    EditText editText2 = findViewById(R.id.editText2);
    EditText editText3 = findViewById(R.id.editText3);
    watcher watcher = new watcher(editText2,editText1);
    editText3.addTextChangedListener(watcher);
    editText2.addTextChangedListener(new watcher(editText3,editText1));




}

}

试试这样的方法

public class watcher implements TextWatcher {
EditText changeAble;
EditText Effector;
public watcher(EditText otherEffector,EditText otherEditor){
    this.Effector =otherEffector;
    this.changeAble = otherEditor;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    //To not change the other editText in case of deleting
    if(!s.toString().isEmpty()){
        changeAble.setText(Integer.valueOf(s)+Integer.valueOf(Effector.getText().toString()));
    }
}

@Override
public void afterTextChanged(Editable s) {



}
}

公共类MainActivity扩展了AppCompatActivity{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    EditText editText1 = findViewById(R.id.editText);
    EditText editText2 = findViewById(R.id.editText2);
    EditText editText3 = findViewById(R.id.editText3);
    watcher watcher = new watcher(editText2,editText1);
    editText3.addTextChangedListener(watcher);
    editText2.addTextChangedListener(new watcher(editText3,editText1));




}
}