title: How to create PreferenceFragment associated with a sliding drawer in android
body: <p>My app has a sliding drawer menu,in which i need to load the preferenceFragment in one of the fragment of the sliding menu.I created a code where preferenceFragment is loaded into fragment but when i close the drawer the prefrenceFragment is not disappearing.I can close it only by pressing back button.My complete code and app image is displayed below.Please help me?</p>
  
  <p><strong>Settings Fragment</strong></p>
  
  <pre><code>public class Settings_fragment extends Fragment
  {
  public Settings_fragment(){}
  
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
  {
      View rootView = inflater.inflate(R.layout.fragment_about, container, false); 
  
      getActivity().getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
      return rootView;
  }
  public static class MyPreferenceFragment extends PreferenceFragment
  {
          @Override
          public void onCreate(final Bundle savedInstanceState)
          {
              super.onCreate(savedInstanceState);
              addPreferencesFromResource(R.xml.preference_layout);
          }
  }
  }
  </code></pre>
  
  <p><strong>NavigationDrawer</strong></p>
  
  <pre><code>public class Homepage_activity extends ActionBarActivity
  {
  private DrawerLayout mDrawerLayout;
  private ListView mDrawerList;
  private ActionBarDrawerToggle mDrawerToggle;
  
  // nav drawer title
  private CharSequence mDrawerTitle;
  
  // used to store app title
  private CharSequence mTitle;
  
  // slide menu items
  private String[] navMenuTitles;
  private TypedArray navMenuIcons;
  
  private ArrayList&lt;NavDrawerItem&gt; navDrawerItems;
  private NavDrawerListAdapter adapter;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) 
  {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.homepage_layout);
  
      mTitle = mDrawerTitle = getTitle();
  
      // load slide menu items
      navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
  
      // nav drawer icons from resources
      navMenuIcons = getResources()
              .obtainTypedArray(R.array.nav_drawer_icons);
  
      mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
      mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
  
      navDrawerItems = new ArrayList&lt;NavDrawerItem&gt;();
  
      // adding nav drawer items to array
      // Home
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
      // Find People
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
      // Photos
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
      // Communities, Will add a counter here
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1), true, "22"));
      // Pages
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));
      // What's hot, We  will add a counter here
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1), true, "50+"));
  
  
      // Recycle the typed array
      navMenuIcons.recycle();
  
      mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
  
      // setting the nav drawer list adapter
      adapter = new NavDrawerListAdapter(getApplicationContext(),
              navDrawerItems);
      mDrawerList.setAdapter(adapter);
  
      // enabling action bar app icon and behaving it as toggle button
      getSupportActionBar().setDisplayHomeAsUpEnabled(true);
      getSupportActionBar().setHomeButtonEnabled(true);
  
      mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
              R.drawable.ic_drawer, //nav menu toggle icon
              R.string.app_name, // nav drawer open - description for accessibility
              R.string.app_name // nav drawer close - description for accessibility
      ) {
          public void onDrawerClosed(View view) {
              getSupportActionBar().setTitle(mTitle);
              // calling onPrepareOptionsMenu() to show action bar icons
              invalidateOptionsMenu();
          }
  
          public void onDrawerOpened(View drawerView) {
              getSupportActionBar().setTitle(mDrawerTitle);
              // calling onPrepareOptionsMenu() to hide action bar icons
              invalidateOptionsMenu();
          }
      };
      mDrawerLayout.setDrawerListener(mDrawerToggle);
  
      if (savedInstanceState == null) {
          // on first time display view for first nav item
          displayView(0);
      }
  }
  
  /**
   * Slide menu item click listener
   * */
  private class SlideMenuClickListener implements
          ListView.OnItemClickListener {
      @Override
      public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position,
              long id) {
          // display view for selected nav drawer item
          displayView(position);
      }
  }
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.mainpage, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      // toggle nav drawer on selecting action bar app icon/title
      if (mDrawerToggle.onOptionsItemSelected(item)) {
          return true;
      }
      // Handle action bar actions click
      switch (item.getItemId()) {
      case R.id.action_settings:
          return true;
      default:
          return super.onOptionsItemSelected(item);
      }
  }
  
  /***
   * Called when invalidateOptionsMenu() is triggered
   */
  @Override
  public boolean onPrepareOptionsMenu(Menu menu) {
      // if nav drawer is opened, hide the action items
      boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
      menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
      return super.onPrepareOptionsMenu(menu);
  }
  
  /**
   * Diplaying fragment view for selected nav drawer list item
   * */
  private void displayView(int position) {
      // update the main content by replacing fragments
      Fragment fragment = null;
      switch (position) {
      case 0:
          fragment = new Today_rep_fragment();
          break;
      case 1:
          fragment = new Monthly_rep_fragment();
          break;
      case 2:
          fragment = new Settings_fragment();
          break;
      case 3:
          fragment = new Waterfacts_fragment();
          break;
      case 4:
          fragment = new Help_fragment();
          break;
      case 5:
          fragment = new About_fragment();
          break;
  
      default:
          break;
      }
  
      if (fragment != null) {
          FragmentManager fragmentManager = getSupportFragmentManager();
          fragmentManager.beginTransaction()
                  .replace(R.id.frame_container, fragment).commit();
  
          // update selected item and title, then close the drawer
          mDrawerList.setItemChecked(position, true);
          mDrawerList.setSelection(position);
          setTitle(navMenuTitles[position]);
          mDrawerLayout.closeDrawer(mDrawerList);
      } else {
          // error in creating fragment
          Log.e("MainActivity", "Error in creating fragment");
      }
  }
  
  @Override
  public void setTitle(CharSequence title) {
      mTitle = title;
      getSupportActionBar().setTitle(mTitle);
  }
  
  /**
   * When using the ActionBarDrawerToggle, you must call it during
   * onPostCreate() and onConfigurationChanged()...
   */
  
  @Override
  protected void onPostCreate(Bundle savedInstanceState) {
      super.onPostCreate(savedInstanceState);
      // Sync the toggle state after onRestoreInstanceState has occurred.
      mDrawerToggle.syncState();
  }
  
  @Override
  public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
      // Pass any configuration change to the drawer toggls
      mDrawerToggle.onConfigurationChanged(newConfig);
  }
  
  }
  </code></pre>
  
  <p><strong>Screenshot</strong>
  <img src="https://i.stack.imgur.com/vagXX.png" alt="preferenceFragment is not disappearing while clicking sliding drawer"></p>