diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 1a17133..a4702c6 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -29,8 +29,6 @@
 import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.provider.CallLog.Calls;
@@ -168,21 +166,6 @@
 
     private DialerDatabaseHelper mDialerDatabaseHelper;
 
-    private static final int EVENT_DELAYED_HIDE_SEARCH = 1;
-
-    // Wait this much time (in ms) before hiding the search fragment after clicking on
-    // a search result to dial, to avoid jank
-    private static final int CLEAR_SEARCH_DELAY = 500;
-
-    final Handler mHandler = new Handler() {
-        @Override
-        public void handleMessage(Message msg) {
-            if (msg.what == EVENT_DELAYED_HIDE_SEARCH) {
-                hideDialpadAndSearchUi();
-            }
-        }
-    };
-
     private class OverflowPopupMenu extends PopupMenu {
         public OverflowPopupMenu(Context context, View anchor) {
             super(context, anchor);
@@ -209,16 +192,14 @@
                     // CallLog screen (search UI will be automatically exited).
                     PhoneNumberInteraction.startInteractionForPhoneCall(
                         DialtactsActivity.this, dataUri, getCallOrigin());
-                    mHandler.sendEmptyMessageDelayed(EVENT_DELAYED_HIDE_SEARCH,
-                            CLEAR_SEARCH_DELAY);
+                    hideDialpadAndSearchUi();
                 }
 
                 @Override
                 public void onCallNumberDirectly(String phoneNumber) {
                     Intent intent = CallUtil.getCallIntent(phoneNumber, getCallOrigin());
                     startActivity(intent);
-                    mHandler.sendEmptyMessageDelayed(EVENT_DELAYED_HIDE_SEARCH,
-                            CLEAR_SEARCH_DELAY);
+                    hideDialpadAndSearchUi();
                 }
 
                 @Override
