diff --git a/src/com/android/dialer/settings/VideoCallingSettingsFragment.java b/src/com/android/dialer/settings/VideoCallingSettingsFragment.java
index fa73ab7..01dbeb3 100644
--- a/src/com/android/dialer/settings/VideoCallingSettingsFragment.java
+++ b/src/com/android/dialer/settings/VideoCallingSettingsFragment.java
@@ -44,7 +44,7 @@
 import com.android.dialer.R;
 
 public class VideoCallingSettingsFragment extends PreferenceFragment implements
-        Preference.OnPreferenceChangeListener {
+        Preference.OnPreferenceClickListener {
 
     private final static String KEY_VIDEO_CALL = "video_calling_preference";
     private SwitchPreference mVideoCallingPreference;
@@ -57,20 +57,20 @@
 
         mContext = getActivity();
         mVideoCallingPreference = (SwitchPreference)findPreference(KEY_VIDEO_CALL);
-        mVideoCallingPreference.setOnPreferenceChangeListener(this);
+        mVideoCallingPreference.setOnPreferenceClickListener(this);
     }
 
     @Override
     public void onResume() {
         super.onResume();
         int enable = Settings.System.getInt(mContext.getContentResolver(),
-                CallUtil.DIALOG_VIDEO_CALLING,CallUtil.DISABLE_VIDEO_CALLING);
+                CallUtil.CONFIG_VIDEO_CALLING, CallUtil.DISABLE_VIDEO_CALLING);
         if(mVideoCallingPreference != null)
             mVideoCallingPreference.setChecked(enable == CallUtil.ENABLE_VIDEO_CALLING);
     }
 
     @Override
-    public boolean onPreferenceChange(Preference preference, Object objValue) {
+    public boolean onPreferenceClick(Preference preference) {
         if (preference == mVideoCallingPreference) {
             boolean isCheck = mVideoCallingPreference.isChecked();
             CallUtil.createVideoCallingDialog(isCheck , mContext);
