我已经使用首选项屏幕设计了设置页面,但我不知道如何在SwitchPreference和列表首选项中实现这些功能。如何通过共享首选项实现条件。
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>
这是我的首选组件屏幕。如何使用共享首选项实现开关状态。
答案 0 :(得分:0)
您可以像在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
并在sharedPreferenceChangeListener
函数中注册onCreate
。
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
您可以处理onSharedPreferenceChanged
功能中的更改。