title: Action Bar Search View (Android) null error
body: <p>I am not sure why it is appearing as null, if it has to do something with the fragment and the fragment title or the drawer, since it is on the main activity of where this fragment is being pulled up from.</p>
  
  <p>Here is my menu xml item:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto" &gt;
      &lt;item android:id="@+id/action_search"
          android:title="@string/action_search"
          android:icon="@drawable/ic_action_search"
          app:showAsAction="always"
          app:actionViewClass="android.support.v7.widget.SearchView" /&gt;
  &lt;/menu&gt;
  </code></pre>
  
  <p>Here is the fragment code:</p>
  
  <pre><code>public class BrowseFragment extends Fragment {
  
      //action bar expands to search
      //search - keyword or tab search, title
      //include popular - same algorithm as home
      //show categories
  
      //category click takes you to grid activity
  //adapter with custom model
      private CategoryViewerAdapter adapter;
  
      //list with custom model
      private List&lt;CategoryItem&gt; categoriesList;
  
      //List view
      private ListView categoryListView;
  
      //SearchView
      private SearchView search;
  
      @Override
      public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
          inflater.inflate(R.menu.browse, menu);
  
          //find the menu item and set search view at the same time
          search = (SearchView) menu.findItem(R.id.action_search).getActionView();
  
  
          //to always show the search view - to include this must implement it above
          search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
              @Override
              public boolean onQueryTextSubmit(String s) {
                  return false;
              }
  
              @Override
              public boolean onQueryTextChange(String s) {
                  return false;
              }
          });
          search.setIconified(false);
  
          super.onCreateOptionsMenu(menu,inflater);
      }
  
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
                               Bundle savedInstanceState) {
          View rootView = inflater.inflate(R.layout.fragment_browse, container, false);
  
          //Allows menu options in fragment
          setHasOptionsMenu(true);
  
  
          //Set adapter for multi-select model and adapter
          adapter = new CategoryViewerAdapter(getActivity(), getSingleCategory());
          categoryListView = (ListView) rootView.findViewById(R.id.categoryListView);
          categoryListView.setAdapter(adapter);
  
  
          return rootView;
      }
  
      //call to retrieve list
      private List&lt;CategoryItem&gt; getSingleCategory() {
          //initiate new list
          categoriesList = new ArrayList&lt;CategoryItem&gt;();
  
          //called to get string array
          Resources res = getResources();
          String[] categories = res.getStringArray(R.array.categories);
  
          //loop through string array
          for (String category : categories) {
              categoriesList.add(get(category));
          }
  
          return categoriesList;
      }
  
      //call model to set names and methods for each item
      private CategoryItem get(String name) {
          return new CategoryItem(name);
      }
  
  
  }
  </code></pre>
  
  <p>The null pointer error points to this line: </p>
  
  <pre><code>search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
  </code></pre>
  
  <p>Here is the error log:</p>
  
  <pre><code>03-03 02:50:33.590  15744-15744/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
      Process: com.example.app, PID: 15744
      java.lang.NullPointerException
              at com.example.app.BrowseFragment.onCreateOptionsMenu(BrowseFragment.java:64)
              at android.app.Fragment.performCreateOptionsMenu(Fragment.java:1780)
              at android.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:1927)
              at android.app.Activity.onCreatePanelMenu(Activity.java:2539)
              at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:436)
              at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:800)
              at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:221)
              at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
              at android.view.Choreographer.doCallbacks(Choreographer.java:574)
              at android.view.Choreographer.doFrame(Choreographer.java:543)
              at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
              at android.os.Handler.handleCallback(Handler.java:733)
              at android.os.Handler.dispatchMessage(Handler.java:95)
              at android.os.Looper.loop(Looper.java:136)
              at android.app.ActivityThread.main(ActivityThread.java:5017)
              at java.lang.reflect.Method.invokeNative(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:515)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
              at dalvik.system.NativeStart.main(Native Method)
  </code></pre>