Setting up a pretty basic PreferenceActivity with headers that calls a PreferenceFragment.
Activity
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected final void onCreatePreferenceHeaders() {
addPreferenceHeadersFromResource(R.xml.preference_headers);
}
}
Fragment
public class AppearanceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.nested_appearance_preferences);
}
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
@Override
public void onPause() {
super.onPause();
}
}
Header
<?xml version="1.0" encoding="utf-8"?>
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header
android:fragment="me.calebjones.spacelaunchnow.settings.AppearanceFragment"
android:icon="@drawable/ic_settings_black"
android:title="General"
android:summary="@string/general_settings_for_launch_tracking_and_application_behavior"
android:breadCrumbShortTitle="breadCrumbShortTitle"
android:breadCrumbTitle="breadCrumbTitle" />
<header
android:fragment="me.calebjones.spacelaunchnow.settings.AppearanceFragment"
android:icon="@drawable/ic_notifications"
android:title="Notifications"
android:summary="Set up launch notifications and scheduling."/>
<header
android:fragment="me.calebjones.spacelaunchnow.settings.AppearanceFragment"
android:icon="@drawable/ic_color_picker"
android:title="Appearance"
android:summary="Customize app theme and colors."/>
<header
android:fragment="me.calebjones.spacelaunchnow.settings.AppearanceFragment"
android:icon="@drawable/ic_wear"
android:title="Wear"
android:summary="Change Android Wear watch face settings."/>
<header
android:icon="@drawable/ic_about_black"
android:summary="Application information about license, libraries, changelog, etc"
android:title="About">
<intent
android:targetClass="me.calebjones.spacelaunchnow.ui.activity.AboutActivity"
android:targetPackage="me.calebjones.spacelaunchnow.ui.activity"/>
</header>
<header
android:icon="@drawable/ic_support_black"
android:summary="Follow my projects and contribute to future development."
android:title="Support">
<intent
android:targetClass="me.calebjones.spacelaunchnow.supporter.SupporterActivity"
android:targetPackage="me.calebjones.spacelaunchnow.supporter"/>
</header>
</preference-headers>
And i'm getting this when clicking on an item:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: me.calebjones.spacelaunchnow.debug, PID: 32224
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4454)
at android.view.ViewGroup.addView(ViewGroup.java:4295)
at android.view.ViewGroup.addView(ViewGroup.java:4252)
at de.mrapp.android.preference.activity.PreferenceFragment.initializeListView(PreferenceFragment.java:147)
at de.mrapp.android.preference.activity.PreferenceFragment.onCreateView(PreferenceFragment.java:719)
at android.app.Fragment.performCreateView(Fragment.java:2352)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:995)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1171)
at android.app.BackStackRecord.run(BackStackRecord.java:815)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1578)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:483)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Setting up a pretty basic PreferenceActivity with headers that calls a PreferenceFragment.
Activity
Fragment
Header
And i'm getting this when clicking on an item: