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函数中的更改后。