0

我一直在努力在我的应用程序中实现 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 从我的偏好中访问数据。任何帮助都会很棒,我绝对是一个有碎片的菜鸟。

4

2 回答 2

2

因为preferenceFragment 是一个实际的Fragment,你可以简单地使用FragmentTransation 来交换它,就像你在Nav 抽屉中的其他Fragment 一样。在任何 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");
于 2014-08-18T00:23:03.167 回答
0

已经看到上述方法遇到了诸如具有透明首选项窗口之类的问题。我可以避免这些问题的唯一方法是使用preferenceActivity 类: How do you create Preference Activity and Preference Fragment on Android?by WannaGetHigh

于 2015-03-18T08:00:04.483 回答