首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现PreferenceFragment?

实现PreferenceFragment?
EN

Stack Overflow用户
提问于 2014-08-17 23:21:11
回答 2查看 1.2K关注 0票数 0

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

我创建了一个偏好片段类,如下所示:

代码语言:javascript
复制
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的prefs是:

代码语言:javascript
复制
<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>

我真的不知道在我的主要活动中应该做什么,这样才能膨胀首选项,然后从prefs中访问数据,使用haredpreferences。任何帮助都会很好,我绝对是个有碎片的新手。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-18 00:23:03

因为preferenceFragment是一个实际的片段,所以您可以使用FragmentTransation来交换它,就像在Nav抽屉中使用其他片段一样。在任何onClick事件或其他情况下,都可以使用下面这样的内容来访问您的PreferenceFragment:

代码语言:javascript
复制
getFragmentManager().beginTransaction()
            .replace(R.id.fragmentContainer, new MadlibSettings())
            .commit();

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

然后,为了从任何地方访问您的首选项,下面的代码应该可以让您开始工作。

代码语言:javascript
复制
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getContext());
String val1 = settings.getString("KEY", "default_value");
settings.putString("key", "new_value");

如果决定在设置文件之外创建自己的首选项文件,则将使用:

代码语言:javascript
复制
SharedPreferences settings = getContext().getSharedPreferences("pref_file_name", 0);
String val1 = settings.getString("KEY", "default_value");
settings.putString("KEY", "new_value");
票数 2
EN

Stack Overflow用户

发布于 2015-03-18 08:00:04

上面的方法遇到了一些问题,比如有一个透明的首选项窗口。避免这些问题的唯一方法是使用preferenceActivity类:How do you create Preference Activity and Preference Fragment on Android? by WannaGetHigh

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25354544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档