title: Change action bar item to searchView in a fragment of Navigation Drawer
body: <p>I have a Navigation drawer with fragments. In all the fragments it shows a share button item in <code>main.xml</code>. </p>
  
  <p>The default fragment is <code>PhotoFragment</code> showing share item of <code>main.xml</code> &amp; when <code>IntroductionFragment</code> is clicked in navigation drawer, the action bar then should show searchview item which is in <code>search.xml</code></p>
  
  <p><strong>MainActivity.java</strong></p>
  
  <pre><code>public class MainActivity 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 ArrayList&lt;NavDrawerItem&gt; navDrawerItems;
  private NavDrawerListAdapter adapter;
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      SpannableString s = new SpannableString(getTitle());
      s.setSpan(new TypefaceSpan(this, "BOOKOS.TTF"), 0, s.length(),
              Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  
      // Update the action bar title with the TypefaceSpan instance
      ActionBar actionBar = getSupportActionBar();
      actionBar.setTitle(s);
  
  
      setContentView(R.layout.activity_main);
  
      mTitle = mDrawerTitle = getTitle();
  
      // load slide menu items
      navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
  
      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], 1));
      // Find People
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[1],1));
      // Photos
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], 1));
      // Communities, Will add a counter here
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], 1));
      // Pages
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], 1));
      // What's hot, We  will add a counter here
      navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], 1));
  
      // Recycle the typed array
    //        navMenuIcons.recycle();
  
      // 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
      ){
          @SuppressLint("NewApi")
          public void onDrawerClosed(View view) {
              SpannableString s = new SpannableString(mTitle);
              s.setSpan(new TypefaceSpan(getApplicationContext(), "BOOKOS.TTF"), 0, s.length(),
                      Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  
              // Update the action bar title with the TypefaceSpan instance
              ActionBar actionBar = getSupportActionBar();
              actionBar.setTitle(s);
           //   getSupportActionBar().setTitle(mTitle);
              // calling onPrepareOptionsMenu() to show action bar icons
  
              supportInvalidateOptionsMenu();
          }
  
          @SuppressLint("NewApi")
          public void onDrawerOpened(View drawerView) {
              SpannableString s = new SpannableString(mDrawerTitle);
              s.setSpan(new TypefaceSpan(getApplicationContext(), "BOOKOS.TTF"), 0, s.length(),
                      Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  
              // Update the action bar title with the TypefaceSpan instance
              ActionBar actionBar = getSupportActionBar();
              actionBar.setTitle(s);
           //   getSupportActionBar().setTitle(mDrawerTitle);
              // calling onPrepareOptionsMenu() to hide action bar icons
              supportInvalidateOptionsMenu();
          }
      };
      mDrawerLayout.setDrawerListener(mDrawerToggle);
  
      if (savedInstanceState == null) {
          // on first time display view for first nav item
        //  displayView(0);
      }
      mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
      displayView(7);
  
  }
  /**
   * 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);
      }
  }
  /**
   * Diplaying fragment view for selected nav drawer list item
   * */
  @SuppressLint("NewApi")
  private void displayView(int position) {
      // update the main content by replacing fragments
      Fragment fragment = null;
      switch (position) {
      case 0:
          fragment = new IntroductionFragment();
          break;
      case 1:
          fragment = new PrefaceFragment();
          break;
      case 2:
          fragment = new PreambleFragment();
          break;
      case 3:
          fragment = new ContentsFragment();
          break;
  
      case 4:
          fragment = new SchedulesFragment();
          break;
      case 5:
          fragment = new AppendixFragment();
          break;
      case 6:
          fragment = new AmendmentFragment();
          break;
      case 7:
          fragment = new PhotoFragment();
          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");
      }
  }
  ActionProvider mActionProvider;
     @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      if(Flag.f==0)
      {
      getMenuInflater().inflate(R.menu.main, menu);
   // Find the share item
      MenuItem shareItem = menu.findItem(R.id.action_share);
  
      // Need to use MenuItemCompat to retrieve the Action Provider
      mActionProvider = (ActionProvider)
          MenuItemCompat.getActionProvider(shareItem);
      }
      else
      {
          getMenuInflater().inflate(R.menu.search, menu);
           // Find the share item
              MenuItem searchItem = menu.findItem(R.id.search);
  
              // Need to use MenuItemCompat to retrieve the Action Provider
              mActionProvider = (ActionProvider)
                  MenuItemCompat.getActionProvider(searchItem);
      // When using the support library, the setOnActionExpandListener() method is
      // static and accepts the MenuItem object as an argument
      MenuItemCompat.setOnActionExpandListener(searchItem, new OnActionExpandListener() {
          @Override
          public boolean onMenuItemActionCollapse(MenuItem item) {
              // Do something when collapsed
              return true;  // Return true to collapse action view
          }
  
          @Override
          public boolean onMenuItemActionExpand(MenuItem item) {
              // Do something when expanded
              return true;  // Return true to expand action view
          }
      });
      }
      return super.onCreateOptionsMenu(menu);
  }
  
  
  @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_share:
          Intent ints=new Intent(this,ShareActivity.class);
  
          startActivity(ints);
          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);
      if(Flag.f==0)
      menu.findItem(R.id.action_share).setVisible(!drawerOpen);
      else
          menu.findItem(R.id.search).setVisible(!drawerOpen);
      Flag.f=0;
      return super.onPrepareOptionsMenu(menu);
  }
  
  @SuppressLint("NewApi")
  @Override
  public void setTitle(CharSequence title) {
      SpannableString s = new SpannableString(mTitle);
      s.setSpan(new TypefaceSpan(this, "BOOKOS.TTF"), 0, s.length(),
              Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  
      mTitle = title;
      getSupportActionBar().setTitle(s);
  }
  
  /**
   * 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>This is how I implemented fragment class to get the searchView from <code>search.xml</code> which I am unable to show it in actionbar</p>
  
  <pre><code>public class IntroductionFragment extends Fragment{
  
  public IntroductionFragment(){
      setRetainInstance(true); 
      this.setHasOptionsMenu(true);   
  }
  
  @SuppressLint("NewApi")
  @Override
  public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState)
  {
      View rootView = inflater.inflate(R.layout.fragment_introduction,container,false);
  
      ...
      ...
  
      getActivity().supportInvalidateOptionsMenu();
      return rootView;
  } 
  
  @Override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
      Log.v("inside onCreateOptionsMenu","???????");
      Flag.f=1;
      super.onCreateOptionsMenu(menu, inflater);
      menu.clear();
      inflater.inflate(R.menu.search, menu);
  
  }
  
  @Override
  public void onConfigurationChanged(Configuration newConfig) {
  
      super.onConfigurationChanged(newConfig);
      LayoutInflater inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      View view = inflater.inflate(R.layout.fragment_introduction, null);
      ViewGroup rootView = (ViewGroup) getView();
      rootView.removeAllViews();
      rootView.addView(view);
  
  }
  }
  </code></pre>
  
  <p>Search.xml</p>
  
  <pre><code>&lt;menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:yourapp="http://schemas.android.com/apk/res-auto"    &gt;
  &lt;item
      android:id="@+id/search"
      android:title="@string/search_hint"
      android:showAsAction="always|collapseActionView"
      yourapp:actionViewClass="android.support.v7.widget.SearchView" /&gt;
  
  &lt;/menu&gt;
  </code></pre>
  
  <p>This is what I tried !</p>
  
  <p>Using <code>menu.clear()</code> clears the item of <code>main.xml</code> &amp; instead I do not see searchview in IntroductionFragment</p>
  
  <p>Please identify what should I do to get my desired result.<br></p>
  
  <p>If you find my question unclear then fell free to comment !</p>
  
  <p>Thanks in advance !</p>