我一直在努力在我的应用程序中实现PreferenceFragment。我的目标是让preferences视图替换我的main_activity片段容器,这样我就可以保留相同的导航抽屉、操作栏等等。
我创建了一个偏好片段类,如下所示:
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是:
<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。任何帮助都会很好,我绝对是个有碎片的新手。
发布于 2014-08-18 00:23:03
因为preferenceFragment是一个实际的片段,所以您可以使用FragmentTransation来交换它,就像在Nav抽屉中使用其他片段一样。在任何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");发布于 2015-03-18 08:00:04
上面的方法遇到了一些问题,比如有一个透明的首选项窗口。避免这些问题的唯一方法是使用preferenceActivity类:How do you create Preference Activity and Preference Fragment on Android? by WannaGetHigh
https://stackoverflow.com/questions/25354544
复制相似问题