如何实现SwitchPreference,List Preference的功能?

时间:2017-05-31 12:18:58

标签: android android-sharedpreferences listpreference switchpreference

我已经使用首选项屏幕设计了设置页面,但我不知道如何在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>

这是我的首选组件屏幕。如何使用共享首选项实现开关状态。

1 个答案:

答案 0 :(得分: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并在sharedPreferenceChangeListener函数中注册onCreate

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

您可以处理onSharedPreferenceChanged功能中的更改。