title: How to add headers into fragment so whenever I click on header I can get another fragment?
body: <p>This is the simplest code which is provided to us when we use SettingActivity</p>
  
  <pre><code>  package com.example.amit.ak505;
  
  
    import android.annotation.TargetApi;
    import android.content.Context;
    import android.content.Intent;
    import android.content.res.Configuration;
    import android.media.Ringtone;
    import android.media.RingtoneManager;
     import android.net.Uri;
     import android.os.Build;
     import android.os.Bundle;
     import android.preference.ListPreference;
     import android.preference.Preference;
     import android.preference.PreferenceActivity;
     import android.support.v7.app.ActionBar;
    import android.preference.PreferenceFragment;
    import android.preference.PreferenceManager;
    import android.preference.RingtonePreference;
    import android.text.TextUtils;
    import android.view.MenuItem;
     import java.util.List;
     import static com.example.amit.ak505.R.layout.button_xml;
  
     /**
      * A {@link PreferenceActivity} that presents a set of application 
      settings.   
      On
     * handset devices, settings are presented as a single list. On tablets,
     * settings are split by category, with category headers shown to the left
       of
       * the list of settings.
      * &lt;p&gt;
      * See &lt;a 
        href="http://developer.android.com/design/patterns/settings.html"&gt;
      * Android Design: Settings&lt;/a&gt; for design guidelines and the &lt;a
  
     *href="http://developer.android.com/guide/topics/ui/
    settings.html"&gt;Settings
     * API Guide&lt;/a&gt; for more information on developing a Settings UI.
    */
      public class SettingsActivity extends AppCompatPreferenceActivity {
     /**
      * A preference value change listener that updates the preference's 
      summary
    * to reflect its new value.
     */
     private static Preference.OnPreferenceChangeListener
      sBindPreferenceSummaryToValueListener = new
      Preference.OnPreferenceChangeListener() {
      @Override
      public boolean onPreferenceChange(Preference preference, Object value) {
          String stringValue = value.toString();
  
          if (preference instanceof ListPreference) {
              // For list preferences, look up the correct display value in
              // the preference's 'entries' list.
              ListPreference listPreference = (ListPreference) preference;
              int index = listPreference.findIndexOfValue(stringValue);
  
              // Set the summary to reflect the new value.
              preference.setSummary(
                      index &gt;= 0
                              ? listPreference.getEntries()[index]
                              : null);
  
          } else if (preference instanceof RingtonePreference) {
              // For ringtone preferences, look up the correct display value
              // using RingtoneManager.
              if (TextUtils.isEmpty(stringValue)) {
                  // Empty values correspond to 'silent' (no ringtone).
                  preference.setSummary(R.string.pref_ringtone_silent);
  
              } else {
                  Ringtone ringtone = RingtoneManager.getRingtone(
                          preference.getContext(), Uri.parse(stringValue));
  
                  if (ringtone == null) {
                      // Clear the summary if there was a lookup error.
                      preference.setSummary(null);
                  } else {
                      // Set the summary to reflect the new ringtone display
                      // name.
                      String name =ringtone.getTitle(preference.getContext());
                      preference.setSummary(name);
                  }
              }
  
          } else {
              // For all other preferences, set the summary to the value's
              // simple string representation.
              preference.setSummary(stringValue);
          }
          return true;
        }
      };
  
       /**
        * Helper method to determine if the device has an extra-large screen. 
     For
     * example, 10" tablets are extra-large.
     */
     private static boolean isXLargeTablet(Context context) {
      return (context.getResources().getConfiguration().screenLayout
              &amp; Configuration.SCREENLAYOUT_SIZE_MASK)
               &gt;=Configuration.SCREENLAYOUT_SIZE_XLARGE;
    }
  
     /**
    * Binds a preference's summary to its value. More specifically, when the
     * preference's value is changed, its summary (line of text below the
    * preference title) is updated to reflect the value. The summary is also
    * immediately updated upon calling this method. The exact display format       
     is
    * dependent on the type of preference.
    *
     * @see #sBindPreferenceSummaryToValueListener
     */
     private static void bindPreferenceSummaryToValue(Preference preference) {
      // Set the listener to watch for value changes.
     preference.setOnPreferenceChangeListener
        (sBindPreferenceSummaryToValueListener);
  
      // Trigger the listener immediately with the preference's
      // current value.
      sBindPreferenceSummaryToValueListener.onPreferenceChange(preference,
              PreferenceManager
                      .getDefaultSharedPreferences(preference.getContext())
                      .getString(preference.getKey(), ""));
      }
    @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
     // setContentView(R.layout.button_xml);
      setupActionBar();
      }
  
     /**
     * Set up the {@link android.app.ActionBar}, if the API is available.
     */
     private void setupActionBar() {
      ActionBar actionBar = getSupportActionBar();
      if (actionBar != null) {
          // Show the Up button in the action bar.
          actionBar.setDisplayHomeAsUpEnabled(true);
      }
      }
  
      /**
   * {
    @inheritDoc}
   */
  @Override
  public boolean onIsMultiPane() {
      return isXLargeTablet(this);
  }
  
  /**
   * {@inheritDoc}
   */
  @Override
  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  public void onBuildHeaders(List&lt;Header&gt; target) {
      loadHeadersFromResource(R.xml.pref_headers, target);
  }
  
  /**
   * This method stops fragment injection in malicious applications.
   * Make sure to deny any unknown fragments here.
   */
    protected boolean isValidFragment(String fragmentName) {
      return PreferenceFragment.class.getName().equals(fragmentName)
              ||GeneralPreferenceFragment.class.getName().equals(fragmentName)
             ||DataSyncPreferenceFragment.class.getName().equals(fragmentName)
        ||NotificationPreferenceFragment.class.getName().equals(fragmentName);
    }
  
  /**
   * This fragment shows general preferences only. It is used when the
   * activity is showing a two-pane settings UI.
   */
    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
    public static class GeneralPreferenceFragment extends PreferenceFragment {
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          addPreferencesFromResource(R.xml.pref_general);
          addPreferencesFromResource(R.xml.pref_data_sync);
          setHasOptionsMenu(true);
  
          // Bind the summaries of EditText/List/Dialog/Ringtone preferences
          // to their values. When their values change, their summaries are
          // updated to reflect the new value, per the Android Design
          // guidelines.
          bindPreferenceSummaryToValue(findPreference("example_text"));
          bindPreferenceSummaryToValue(findPreference("example_list"));
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          int id = item.getItemId();
          if (id == android.R.id.home) {
              startActivity(new Intent(getActivity(),SettingsActivity.class));
              return true;
          }
          return super.onOptionsItemSelected(item);
       }
   }
  
  /**
   * This fragment shows notification preferences only. It is used when the
   * activity is showing a two-pane settings UI.
   */
  @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  public static class NotificationPreferenceFragment
  extends PreferenceFragment {
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          addPreferencesFromResource(R.xml.pref_notification);
          setHasOptionsMenu(true);
          // Bind the summaries of EditText/List/Dialog/Ringtone preferences
          // to their values. When their values change, their summaries are
          // updated to reflect the new value, per the Android Design
          // guidelines.
            bindPreferenceSummaryToValue(findPreference("
               notifications_new_message_ringtone"));
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          int id = item.getItemId();
          if (id == android.R.id.home) {
              startActivity(new Intent(getActivity(),SettingsActivity.class));
              return true;
          }
          return super.onOptionsItemSelected(item);
      }
   }
  
   /**
   * This fragment shows data and sync preferences only. It is used when the
   * activity is showing a two-pane settings UI.
    */
   @TargetApi(Build.VERSION_CODES.HONEYCOMB)
   public static class DataSyncPreferenceFragment extends PreferenceFragment {
      @Override
       public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          addPreferencesFromResource(R.xml.pref_data_sync);
          setHasOptionsMenu(true);
          // Bind the summaries of EditText/List/Dialog/Ringtone preferences
          // to their values. When their values change, their summaries are
          // updated to reflect the new value, per the Android Design
          // guidelines.
          bindPreferenceSummaryToValue(findPreference("sync_frequency"));
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          int id = item.getItemId();
          if (id == android.R.id.home) {
              startActivity(new Intent(getActivity(),SettingsActivity.class));
              return true;
          }
          return super.onOptionsItemSelected(item);
      }
   }
    }
  </code></pre>
  
  <p>general_pref.xml </p>
  
  <pre><code> &lt;PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android"&gt;
  
  &lt;SwitchPreference
      android:defaultValue="true"
      android:key="example_switch"
      android:summary="@string/pref_description_social_recommendations"
      android:title="@string/pref_title_social_recommendations" /&gt;
  
        &lt;!-- NOTE: EditTextPreference accepts EditText attributes. --&gt;
        &lt;!-- NOTE: EditTextPreference's summary should be set to its value by 
         the activity code. --&gt;
      &lt;EditTextPreference
      android:capitalize="words"
      android:defaultValue="@string/pref_default_display_name"
      android:inputType="textCapWords"
      android:key="example_text"
      android:maxLines="1"
      android:selectAllOnFocus="true"
      android:singleLine="true"
      android:title="@string/pref_title_display_name" /&gt;
  
     &lt;!-- NOTE: Hide buttons to simplify the UI. Users can touch outside the
      dialog to
       dismiss it. --&gt;
  
      &lt;ListPreference
      android:defaultValue="-1"
      android:entries="@array/pref_example_list_titles"
      android:entryValues="@array/pref_example_list_values"
      android:key="example_list"
      android:negativeButtonText="@null"
      android:positiveButtonText="@null"
      android:title="@string/pref_title_add_friends_to_messages" /&gt;
  
     &lt;/PreferenceScreen&gt;
  </code></pre>
  
  <p>All I want is to add a header into general_pref.xml.on clicking at which I can start a new fragment.</p>
  
  <p>Is it possible to use header in general_pref.xml?</p>