diff options
author | Joanne Chung <joannechung@google.com> | 2021-08-18 10:32:34 +0800 |
---|---|---|
committer | Joanne Chung <joannechung@google.com> | 2021-08-18 06:50:28 +0000 |
commit | 018e3d97d0d5b704c7fbaf6477c35e9b9d93b29d (patch) | |
tree | ffdfa9d726faa6cbff4d80ba7d58524d8ac777ff | |
parent | 1b5d7b4c2a2b7ad9827dbf8557b97b5ef9d31465 (diff) | |
download | base-018e3d97d0d5b704c7fbaf6477c35e9b9d93b29d.tar.gz |
Bug Fix: fix NullPointerException while scrolling message apps
The issue will occur when the view is removed from the hierarchy by
the time the translation response returns. Do a null check to make
sure the view still exists.
Bug: 196933332
Test: atest CtsTranslationTestCases
Tese: manual. not see the crash when scrolling the apps.
Change-Id: Ifee933a802385750d431800ef50f6f2c306ccc0f
-rw-r--r-- | core/java/android/view/translation/UiTranslationController.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/core/java/android/view/translation/UiTranslationController.java b/core/java/android/view/translation/UiTranslationController.java index a8335918cc84..442d099f0678 100644 --- a/core/java/android/view/translation/UiTranslationController.java +++ b/core/java/android/view/translation/UiTranslationController.java @@ -356,7 +356,11 @@ public class UiTranslationController { } for (int i = 0; i < translatedResult.size(); i++) { final AutofillId autofillId = new AutofillId(translatedResult.keyAt(i)); - final View view = mViews.get(autofillId).get(); + final WeakReference<View> viewRef = mViews.get(autofillId); + if (viewRef == null) { + continue; + } + final View view = viewRef.get(); if (view == null) { Log.w(TAG, "onTranslationCompleted: the view for autofill id " + autofillId + " may be gone."); @@ -416,7 +420,11 @@ public class UiTranslationController { Log.w(TAG, "No AutofillId is set in ViewTranslationResponse"); continue; } - final View view = mViews.get(autofillId).get(); + final WeakReference<View> viewRef = mViews.get(autofillId); + if (viewRef == null) { + continue; + } + final View view = viewRef.get(); if (view == null) { Log.w(TAG, "onTranslationCompleted: the view for autofill id " + autofillId + " may be gone."); |