OSDN Git Service

Don't crash search when getKeyDispatcherState() is null
authorBjorn Bringert <bringert@android.com>
Mon, 28 Sep 2009 18:37:29 +0000 (19:37 +0100)
committerBjorn Bringert <bringert@android.com>
Mon, 28 Sep 2009 18:37:29 +0000 (19:37 +0100)
Fixes http://b/editIssue?id=2150672

Change-Id: I6fb87c1a59b4b3a945822932047a66c4116e6391

core/java/android/app/SearchDialog.java

index 68be2e8..1e9d5a1 100644 (file)
@@ -1709,14 +1709,17 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
         public boolean dispatchKeyEventPreIme(KeyEvent event) {
             if (DBG) Log.d(LOG_TAG, "onKeyPreIme(" + event + ")");
             if (mSearchDialog != null && 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
-                        && !event.isCanceled() && getKeyDispatcherState().isTracking(event)) {
-                    mSearchDialog.onBackPressed();
-                    return true;
+                KeyEvent.DispatcherState state = getKeyDispatcherState();
+                if (state != null) {
+                    if (event.getAction() == KeyEvent.ACTION_DOWN
+                            && event.getRepeatCount() == 0) {
+                        state.startTracking(event, this);
+                        return true;
+                    } else if (event.getAction() == KeyEvent.ACTION_UP
+                            && !event.isCanceled() && state.isTracking(event)) {
+                        mSearchDialog.onBackPressed();
+                        return true;
+                    }
                 }
             }
             return super.dispatchKeyEventPreIme(event);