实现PreferenceFragment?

时间:2014-08-17 23:21:11

标签: android android-fragments sharedpreferences preferences preferencefragment

我一直在努力在我的应用中实现PreferenceFragment。我的目标是让首选项视图替换我的main_activity片段容器,这样我就可以保留相同的导航抽屉,操作栏等。

我创建了一个Preference Fragment类,如下所示:

public class MadlibsSettings extends PreferenceFragment {

android.support.v7.app.ActionBar actionBar;
CheckBoxPreference themeSwitch;
ListPreference fontSize;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = super.onCreateView(inflater, container, savedInstanceState);
    view.setBackgroundColor(getResources().getColor(android.R.color.white));

    actionBar = (android.support.v7.app.ActionBar) ((MainActivity)getActivity()).getSupportActionBar();
    actionBar.setTitle("Settings");

    addPreferencesFromResource(R.layout.madlibs_settings);

    //fontSize = (ListPreference) findPreference("list");

    return view;
}
}

我在R.layout.madlibs_settings中的首选项是:

<PreferenceCategory android:title="PreferenceCategory A" >
    <CheckBoxPreference
        android:id="@+id/checkbox1"
        android:defaultValue="false"
        android:key="checkbox1"
        android:summary="Switches App Layout to Dark Theme"
        android:title="Darker Theme" />
</PreferenceCategory>
<PreferenceCategory android:title="PreferenceCategory B" >
    <ListPreference
        android:id="@+id/ListPreference"
        android:defaultValue="8"
        android:entries="@array/list"
        android:entryValues="@array/LValues"
        android:key="list"
        android:summary="Choose Font Size"
        android:title="Font Size" />
</PreferenceCategory>

</PreferenceScreen>

我不确定在我的主要活动中要做什么来扩充偏好,然后使用haredpreferences从我的prefs访问数据。任何帮助都会很棒,我绝对是一个有片段的新秀。

2 个答案:

答案 0 :(得分:2)

因为preferenceFragment是一个实际的片段,您可以像使用Nav抽屉中的其他片段一样使用FragmentTransation进行交换。无论是onClick事件还是其他事件,请使用以下内容转到PreferenceFragment:

getFragmentManager().beginTransaction()
            .replace(R.id.fragmentContainer, new MadlibSettings())
            .commit();

来源:http://developer.android.com/guide/topics/ui/settings.html#Fragment

然后,为了从任何地方访问您的首选项,以下代码应该能够帮助您入门。

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getContext());
String val1 = settings.getString("KEY", "default_value");
settings.putString("key", "new_value");

如果您决定制作自己的首选项文件,那么您将使用:

SharedPreferences settings = getContext().getSharedPreferences("pref_file_name", 0);
String val1 = settings.getString("KEY", "default_value");
settings.putString("KEY", "new_value");

答案 1 :(得分:0)

上面的方法被认为遇到了像透明偏好窗口这样的问题。我唯一能避免这些问题的方法是使用preferenceActivity类: How do you create Preference Activity and Preference Fragment on Android?来自WannaGetHigh