Непосредственная реализация, вероятно, приведет к СБОЙ вашего приложения. Вы можете обойти это, используя переменную флага
public class MainActivity extends Activity {
EditText et1, et2;
String flag = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1 = (EditText) findViewById(R.id.editText1);
et2 = (EditText) findViewById(R.id.editText2);
// Here update the flag variable to keep track which text view is in use
et1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
flag = "ET1";
}
});
// Here update the flag variable to keep track which text view is in use
et2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
flag = "ET2";
}
});
et1.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// Set the value of editText2 value here if only flag contains
// ET1
// This will prevent changes if ET2 is being used
if (flag.equals("ET1")) {
et2.setText(s);
}
}
});
et2.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// Set the value of editText1 value here only if flag equals ET2
if (flag.equals("ET2")) {
et1.setText(s);
}
}
});
}
}
Выполнить Здесь дважды щелкните EditText, прежде чем вводить текст. Вы можете еще больше улучшить это, включив и отключив текст редактирования в соответствующих ситуациях и, следовательно, сделав это, вы можете добиться того же одним щелчком мыши.
Если у вас есть вопросы по коду, пожалуйста, прокомментируйте ниже.
person
codePG
schedule
16.10.2014