我一直在努力在我的应用中实现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访问数据。任何帮助都会很棒,我绝对是一个有片段的新秀。
答案 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