是否有可能拥有 3 个相互更改的编辑文本,这些文本可以在所有 3 个之间互换?



这是在安卓工作室。

所以我有 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));


}

}

我不确定锁定编辑文本是什么意思,但您可以尝试使用 TextWatcher 来实现这一点。

例如。

EditText editText1 = (EditText)findViewById(R.id.edittext1);
editText1.addTextChangedListener(new TextWatcher() {
 @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) {
  //Add the logic necessary to achieve your requirements here
  eg. 
  if(!editText2.getText().toString().isEmpty){
    //Do your math and set the text to editext3
    val value1 = Integer.parseInt(editText1.getText().toString());
    val value2 = Integer.parseInt(editText2.getText().toString());
    editText3.setText(value1 + value2)
  }
 } 
});

等等....

最新更新