summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoanne Chung <joannechung@google.com>2021-08-18 10:32:34 +0800
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-08-19 02:37:50 +0000
commit1c968fb0797455d17ceea63cea546e319f57e249 (patch)
tree7fdbfe9187d75a00d71dda983a85badee4263079
parent1ddab32206a601acdebce74be3499c25720cb43f (diff)
downloadbase-1c968fb0797455d17ceea63cea546e319f57e249.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 (cherry picked from commit 018e3d97d0d5b704c7fbaf6477c35e9b9d93b29d)
-rw-r--r--core/java/android/view/translation/UiTranslationController.java12
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.");