diff options
| -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 4b5a7b40fe44..a615f2dfc9df 100644 --- a/core/java/android/preference/DialogPreference.java +++ b/core/java/android/preference/DialogPreference.java @@ -342,16 +342,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); } } |