如何实现SwitchPreference,List Preference的函数?
问题描述:
我已经通过使用首选项屏幕设计了设置页面,但是我不知道如何在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部件通过使用来实现开和关状态的开关共享偏好。
答
您可以按照与您在ListPreference
所做的相同的方式实施它。 您需要设置android:entries
和android: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
函数中的更改后。