সংক্ষিপ্ত উত্তর
ব্যবহারকারী এবং প্রোগ্রামের ট্রিগার হওয়া ইভেন্টগুলির মধ্যে পার্থক্য করার জন্য বর্তমানে কোন ভিউয়ের ফোকাস রয়েছে তা আপনি পরীক্ষা করতে পারেন।
EditText myEditText = (EditText) findViewById(R.id.myEditText);
myEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (myEditText.hasFocus()) {
// is only executed if the EditText was directly changed by the user
}
}
//...
});
দীর্ঘ উত্তর
সংক্ষিপ্ত উত্তর অতিরিক্ত হিসাবে: যদি myEditTextইতিমধ্যে ফোকাস যখন আপনি প্রোগ্রামের মাধ্যমে আপনি অন্য যে পাঠ্য কল করা উচিত পরিবর্তন হয়েছে clearFocus(), তাহলে আপনি কল setText(...)এবং ফোকাস আপনি পরে পুনরায় অনুরোধ। এটি একটি ইউটিলিটি ফাংশনে রাখা ভাল ধারণা হবে:
void updateText(EditText editText, String text) {
boolean focussed = editText.hasFocus();
if (focussed) {
editText.clearFocus();
}
editText.setText(text);
if (focussed) {
editText.requestFocus();
}
}
কোটলিনের জন্য:
যেহেতু কোটলিন এক্সটেনশন ফাংশনকে সমর্থন করে আপনার ইউটিলিটি ফাংশনটি দেখতে এরকম হতে পারে:
fun EditText.updateText(text: String) {
val focussed = hasFocus()
if (focussed) {
clearFocus()
}
setText(text)
if (focussed) {
requestFocus()
}
}