这是在安卓工作室。
所以我有 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)
}
}
});
等等....