diff options
| author | 2019-03-08 06:13:49 -0800 | |
|---|---|---|
| committer | 2019-03-08 06:13:49 -0800 | |
| commit | 03887a9bed85d4ad9ea25ecc37d2b3dbb3cc40d9 (patch) | |
| tree | 8695bce37f8ac3bc8e5060f417d70eac5cef7610 | |
| parent | f4df3d9523cc78474bedbd34e9aa3ac29e6f3d1f (diff) | |
| parent | bee3e01c9b552b57e956b221e86036cab52e92d1 (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.java | 25 |
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); } } |