2016-08-30 52 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