我有一个带有子PreferenceScreen的PreferenceScreen:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="SOUND">
<PreferenceScreen android:title="Sound Options"
android:fragment="com.test.SoundPreferenceFragment">
</PreferenceScreen>
</PreferenceCategory>
...
子偏好是PreferenceFragment的自定义实现
public class SoundPreferencesFragment extends PreferenceFragment implements
OnSharedPreferenceChangeListener {
...
我想知道我应该如何启动自定义片段。在我的主要活动中,我这样做:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, settingsPreference).commit();
}
这对于启动我的主设置首选项屏幕非常有用。
然后我覆盖:
@Override
public boolean onPreferenceStartFragment(PreferenceFragment fragment, Preference preference) {
getFragmentManager().beginTransaction().replace(android.R.id.content, new SoundPreferenceFragment()).commit();
return true;
}
这似乎有效,但我有几个问题。
编辑:
我也试图不扩展onPreferenceStartFragment&#39;在我的主要活动中希望android能够正确地启动新的首选项&#39;它似乎确实启动了新的PreferenceFragment,但它将UI叠加在主要首选项UI的顶部。
答案 0 :(得分:1)
您必须创建一个新活动并附加SoundPreferencesFragment。 当您在主设置活动中选择项目时,启动新活动