diff options
| author | Jeff Brown <jeffbrown@google.com> | 2011-01-10 16:26:36 -0800 |
|---|---|---|
| committer | Jeff Brown <jeffbrown@google.com> | 2011-01-10 16:26:36 -0800 |
| commit | b3ea92235c9ccc1ff295839a8f324dcd1c83dd6f (patch) | |
| tree | e5da117e709a7ec9bec982be9977505860671cb3 /core/java/android/widget/PopupWindow.java | |
| parent | eb97c0ddc063176c26065fc6855188edf0c16e03 (diff) | |
Fix NPEs in detached views.
Bug: 3297518
Change-Id: Ife1384f3a5bebbd28a29f97dc6d519f8a0b10ba9
Diffstat (limited to 'core/java/android/widget/PopupWindow.java')
| -rw-r--r-- | core/java/android/widget/PopupWindow.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/core/java/android/widget/PopupWindow.java b/core/java/android/widget/PopupWindow.java index 5a5b6f49f532..79d6a81d2461 100644 --- a/core/java/android/widget/PopupWindow.java +++ b/core/java/android/widget/PopupWindow.java @@ -1468,12 +1468,17 @@ public class PopupWindow { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) { - getKeyDispatcherState().startTracking(event, this); - return true; - } else if (event.getAction() == KeyEvent.ACTION_UP - && getKeyDispatcherState().isTracking(event) && !event.isCanceled()) { - dismiss(); + KeyEvent.DispatcherState state = getKeyDispatcherState(); + if (state != null) { + state.startTracking(event, this); + } return true; + } else if (event.getAction() == KeyEvent.ACTION_UP) { + KeyEvent.DispatcherState state = getKeyDispatcherState(); + if (state != null && state.isTracking(event) && !event.isCanceled()) { + dismiss(); + return true; + } } return super.dispatchKeyEvent(event); } else { |
