2016-08-30 80 views
1

我有一个SwitchPreference,如果手机振动或者不振动,它应该可以处理。SwitchPreference振动

目前,我有这样的:

import android.os.Vibrator; 
... 

public static final String PREF_CHANGE_THEME = "Changetheme"; 
private SwitchPreference mSwitchPreference; 
private static SharedPreferences sPrefs; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    sPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
    mSwitchPreference = (SwitchPreference) findPreference(PREF_CHANGE_THEME); 

我希望能够做到这一点:

sPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
     mSwitchPreference = (SwitchPreference) 

//If enabled execute the following: 
Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE); 
    // Vibrate for 500 milliseconds 
    v.vibrate(500); 
//Else: nothing 

什么是正确的语法,我应该使用?

回答

1

在你preference XML:

<SwitchPreference 
    android:key="Changetheme" 
    android:title="vibrate" 
    android:defaultValue="false" /> 

而且Java代码应该是这样的:

public class SettingActivity extends PreferenceActivity implements onSharedPreferenceChangeListener { 

    public SwitchPreference mSwitchPreference; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.sample); 

     mSwitchPreference = (SwitchPreference) findPreference(PREF_CHANGE_THEME); //Preference Key 
     mSwitchPreference.setOnPreferenceChangeListener(this); 
    } 

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 
     if (key.equals(PREF_CHANGE_THEME)) { 
     boolean isEnable = sharedPreferences.getBoolean(PREF_CHANGE_THEME, false); 
     //Do whatever you want here. This is an example. 
     if (isEnable) { 
      mSwitchPreference.setSummary("Enabled"); 
     } else { 
      mSwitchPreference.setSummary("Disabled"); 
     } 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 

     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(TestPrefActivity.this); 
     boolean isEnable = preferences.getBoolean(PREF_CHANGE_THEME, false); 

     if (isEnable) { 
      mSwitchPreference.setSummary("Enabled"); 
     } else { 
      mSwitchPreference.setSummary("Disabled"); 
     } 
    } 
} 
+0

感谢您的回答,我有一个小问题,我无法实现onSharedPreferenceChangeListener它说它无法解决它。 – Nicolas

+0

@Nicolas你的活动应该实现onSharePreferenceChangeListener。 – Amir

+0

我的意思是在Android Studio上复制'公共类SettingActivity扩展PreferenceActivity实现onSharedPreferenceChangeListener {'说onSharedPreferenceChangeListener变成红色并说:'不能解析符号'的部分 – Nicolas