Skip to content

Commit

Permalink
Fix issue with composing text not being cleared on some Android devic…
Browse files Browse the repository at this point in the history
…es (#18859)

Summary:
Clearing the android TextInput text programmatically (i.e. calling: this.textInputRef.clear()) does not clear the previously composing text, if enabled, causing inconveniences when such behaviour is desired (i.e. chat input box, where you constantly have to clear the input after sending a message). Instead, the currently observed behaviour is that, after a new text is entered (usually as soon as the first letter), the previously composing text reappears making the input unusable.

The effect is only observable on some devices, for example, we observed it on Samsung S6 devices using both Android 6 and 7, and several LG devices running Android 6.

This issue is only present when clearing the text; setting text to some other value does not produce the same effect.

<!--
  Required: Write your motivation here.
  If this PR fixes an issue, type "Fixes #issueNumber" to automatically close the issue when the PR is merged.
-->
Pull Request resolved: #18859

Differential Revision: D14067144

Pulled By: hramos

fbshipit-source-id: 09f337edc026b83221f8a399749222cd75457ec7
  • Loading branch information
mannol authored and facebook-github-bot committed Feb 22, 2019
1 parent c933755 commit b471916
Showing 1 changed file with 7 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,13 @@ public void maybeSetText(ReactTextUpdate reactTextUpdate) {
mContainsImages = reactTextUpdate.containsImages();
mIsSettingTextFromJS = true;

getText().replace(0, length(), spannableStringBuilder);
// On some devices, when the text is cleared, buggy keyboards will not clear the composing
// text so, we have to set text to null, which will clear the currently composing text.
if (reactTextUpdate.getText().length() == 0) {
setText(null);
} else {
getText().replace(0, length(), spannableStringBuilder);
}

mIsSettingTextFromJS = false;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Expand Down

0 comments on commit b471916

Please sign in to comment.