0

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

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

4

1 回答 1

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并注册 a 。sharedPreferenceChangeListeneronCreate

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

之后就可以处理函数的变化了onSharedPreferenceChanged

于 2017-05-31T12:32:22.403 回答