0

我已經通過使用首選項屏幕設計了設置頁面,但是我不知道如何在SwitchPreference和列表首選項中實現函數。如何通過共享首選項實現條件。如何實現SwitchPreference,List Preference的函數?

android.app.FragmentManager fragmentManager = getFragmentManager(); 
    android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(android.R.id.content,new PreferenceFragments()); 
    fragmentTransaction.commit(); 

上述代碼用於設置活動中的片段實現。

在下面的代碼是偏好片段

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preference); 
    Preference preference = (Preference)findPreference("General_key"); 
    preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
     @Override 
     public boolean onPreferenceClick(Preference preference) { 

      return false; 
     } 
    }); 

} 

偏好屏幕是preference.xml

<SwitchPreference 
     android:title="Auto Record" 
     android:summary="Automatic Start Recording" 
     android:key="General_key" 
     ></SwitchPreference> 
<ListPreference 
    android:title="Recording Format(Mp3)" 
    android:summary="Select a Recording Format" 
    android:entries="@array/listEntries" 
    android:entryValues="@array/listEntriesValues" 
    android:key="record_format_key" 
    ></ListPreference> 

這是我的優先screen.How部件通過使用來實現開和關狀態的開關共享偏好。

回答

0

您可以按照與您在ListPreference所做的相同的方式實施它。 您需要設置android:entriesandroid:entryValues

例如:

preferences.xml

<SwitchPreference 
android:title="Auto Record" 
android:summary="Automatic Start Recording" 
android:entries="@array/record_switch_pref_entries" 
android:entryValues="@array/record_switch_pref_values" 
android:key="General_key"/> 

arrays.xml

<string-array name="record_switch_pref_entries"> 
     <item>No</item> 
     <item>Yes</item> 
</string-array> 

<string-array name="record_switch_pref_values"> 
     <item>0</item> 
     <item>1</item> 
</string-array>  

如果你想聽聽值/選擇更改,您應該實現SharedPreferences.OnSharedPreferenceChangeListener並在onCreate功能註冊sharedPreferenceChangeListener

getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);  

在您可以處理onSharedPreferenceChanged函數中的更改後。