我正在做简单的设置活动。我正在使用首选项标题、PreferenceFragment、多个首选项屏幕文件和 PreferenceActivity。我希望它看起来像 android 系统设置一样工作。在平板电脑上一切正常。设置活动显示两个片段,一个带有标题,一个带有首选项屏幕。当我在手机上打开应用程序时,它只显示一个带有标题的片段,这正是我想要的,但是当我点击某个东西时,应用程序崩溃了。我想让它像 android 系统设置一样工作,这意味着当我点击手机上的某些东西时,它会用偏好屏幕替换片段。谢谢您的帮助。
这是我的代码:
headers.xml
<preference-headers
xmlns:android="http://schemas.android.com/apk/res/android">
<header
android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF"
android:title="@string/settings_update"
android:summary="@string/settings_updateSummary" >
</header>
<header
android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF"
android:title="@string/settings_display"
android:summary="@string/settings_displaySummary">
</header>
<header
android:fragment="settingsApps.com.bendit.ILY.mysetts.PrefsF"
android:title="@string/settings_notify">
</header>
</preference-headers>
PreferenceActivity(Prefs.java)
public class Prefs extends PreferenceActivity {
public void onBuildHeaders(List<Header> target) {
loadHeadersFromResource(R.xml.headers, target);
}
}
PreferenceFragment(PrefsF.java)
public class PrefsF extends PreferenceFragment{
@Override
public void onCreate(Bundle savedInstanceState) {
int preferenceFile_toLoad=-1;
String settings = getArguments().getString("settings");
if (Constants.SETTING_UPDATE.equals(settings)) {
// Load the preferences from an XML resource
preferenceFile_toLoad= R.xml.preference_update;
}else if (Constants.SETTING_DISPLAY.equals(settings)) {
// Load the preferences from an XML resource
preferenceFile_toLoad=R.xml.preference_display;
}else if (Constants.SETTING_NOTIFY.equals(settings)) {
// Load the preferences from an XML resource
preferenceFile_toLoad=R.xml.preference_notify;
}
addPreferencesFromResource(preferenceFile_toLoad);
}
}