summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Siarhei Vishniakou <svv@google.com> 2019-03-08 06:13:49 -0800
committer android-build-merger <android-build-merger@google.com> 2019-03-08 06:13:49 -0800
commit03887a9bed85d4ad9ea25ecc37d2b3dbb3cc40d9 (patch)
tree8695bce37f8ac3bc8e5060f417d70eac5cef7610
parentf4df3d9523cc78474bedbd34e9aa3ac29e6f3d1f (diff)
parentbee3e01c9b552b57e956b221e86036cab52e92d1 (diff)
Merge "Add a null check for getWindow()" am: 3c69948e6a am: 71f52a6a0d
am: bee3e01c9b Change-Id: Iee9698396354eb0e0cacff759cc0dcef621ff514
-rw-r--r--core/java/android/preference/DialogPreference.java25
1 files changed, 20 insertions, 5 deletions
diff --git a/core/java/android/preference/DialogPreference.java b/core/java/android/preference/DialogPreference.java
index 888029679018..e6564664d522 100644
--- a/core/java/android/preference/DialogPreference.java
+++ b/core/java/android/preference/DialogPreference.java
@@ -349,16 +349,31 @@ public abstract class DialogPreference extends Preference implements
dialog.show();
}
+ /**
+ * Get the DecorView.
+ * @return the DecorView for the current dialog window, if it exists.
+ * If the window does not exist, null is returned.
+ */
+ private View getDecorView() {
+ if (mDialog != null && mDialog.getWindow() != null) {
+ return mDialog.getWindow().getDecorView();
+ }
+ return null;
+ }
+
void postDismiss() {
removeDismissCallbacks();
- View decorView = mDialog.getWindow().getDecorView();
- decorView.post(mDismissRunnable);
+ View decorView = getDecorView();
+ if (decorView != null) {
+ // If decorView is null, dialog was already dismissed
+ decorView.post(mDismissRunnable);
+ }
}
private void removeDismissCallbacks() {
- if (mDialog != null && mDialog.getWindow() != null
- && mDialog.getWindow().getDecorView() != null) {
- mDialog.getWindow().getDecorView().removeCallbacks(mDismissRunnable);
+ View decorView = getDecorView();
+ if (decorView != null) {
+ decorView.removeCallbacks(mDismissRunnable);
}
}