0

Я всегда получаю SearchView нуль на линии ниже в моем классе фрагмент:Android - NullPointerException на SearchView в фрагменте

SearchView SearchView = (SearchView) MenuItemCompat.getActionView (searchItem);

вот мой класс фрагмент, пожалуйста, найти onCreateOptionsMenu метод в нижней части:

public class FriendsListActivity extends Fragment implements EventListener { 

    ArrayList<Users> friendList = new ArrayList<Users>(); 
    ArrayList<Users> blockedList = new ArrayList<Users>(); 
    ArrayList<Users> famliyList = new ArrayList<Users>(); 
    ArrayList<Users> newContactList = new ArrayList<Users>(); 

    ArrayList<JSONObject> finalContactList = new ArrayList<JSONObject>(); 
    ArrayList<JSONObject> modifiedContactList = new ArrayList<JSONObject>(); 

    static int count; 

    private Menu optionsMenu; 

    private DBHelper mydb ; 

    Map<String , String> dbContectMap; 

    SocketOperator socket; 

    boolean isGetResult = false; 

    List<String> mobileList = new ArrayList<String>(); 

    JSONObject changeCategoryJobj = new JSONObject(); 

    CutsomAdapter customFriendListAdapter; 

    String headerpixurl = "images/b58a34f2-ec57-494f-821e-09ecf584449e/profileImage/stickyHeader/82508da9-bf53-488f-a09b-3bb250cc1bd2.PNG"; 

    String startCategory; 
    String lastCategory = "start"; 
    int isHeader = 0; 
    ListView lv1; 

    private boolean isActivityInitialized = false; 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     FragmentActivity faActivity = (FragmentActivity) super.getActivity(); 
     // main layout which contains list 
     LinearLayout  llLayout = (LinearLayout) inflater.inflate(R.layout.friends_activity_main, container, false); 


     //sqlite DB 
     mydb = new DBHelper(FriendsListActivity.super.getActivity()); 
     dbContectMap = mydb.getAllCotacts(); 

     socket = new SocketOperator(this); 

     fetchContactsFromPhone();// from phone 
     int count = 0; 
     try { 
      while(!isGetResult && count <= 6){ 
       Thread.sleep(5000); 
       count++; 
      } 

     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     //fetchContactsFromServer(mobileList); 

     // friends_activity_list_row_layout , represents one item in list view 
     customFriendListAdapter = new CutsomAdapter(FriendsListActivity.super.getActivity().getApplicationContext(), 
       R.layout.friends_activity_list_row_layout , finalContactList); 
     // this will be list which conain items 
     lv1= (ListView) llLayout.findViewById(R.id.friends_activity_custom_list); 
     lv1.setStackFromBottom(false); 
     lv1.setAdapter(customFriendListAdapter); 

     setHasOptionsMenu(true); 
     setupActionBar(); 
     isActivityInitialized = true; 
     return llLayout; 
    } 

    // give a delete button to remove permanatly from list 

    // same code is in LoginActivity, when ever change here also code review the LoginActivity code too 
    public void fetchContactsFromPhone() { 

     String phoneNumber = null; 
     String email = null; 

     Uri CONTENT_URI = ContactsContract.Contacts.CONTENT_URI; 
     String _ID = ContactsContract.Contacts._ID; 
     String DISPLAY_NAME = ContactsContract.Contacts.DISPLAY_NAME; 
     String HAS_PHONE_NUMBER = ContactsContract.Contacts.HAS_PHONE_NUMBER; 

     Uri PhoneCONTENT_URI = ContactsContract.CommonDataKinds.Phone.CONTENT_URI; 
     String Phone_CONTACT_ID = ContactsContract.CommonDataKinds.Phone.CONTACT_ID; 
     String NUMBER = ContactsContract.CommonDataKinds.Phone.NUMBER; 

     Uri EmailCONTENT_URI = ContactsContract.CommonDataKinds.Email.CONTENT_URI; 
     String EmailCONTACT_ID = ContactsContract.CommonDataKinds.Email.CONTACT_ID; 
     String DATA = ContactsContract.CommonDataKinds.Email.DATA; 

     //StringBuffer output = new StringBuffer(); 

     ContentResolver contentResolver = FriendsListActivity.super.getActivity().getContentResolver(); 

     Cursor cursor = contentResolver.query(CONTENT_URI, null, null, null, 
       null); 

     // Loop for every contact in the phone 
     if (cursor.getCount() > 0) { 

      while (cursor.moveToNext()) { 

       String contact_id = cursor 
         .getString(cursor.getColumnIndex(_ID)); 
       String name = cursor.getString(cursor 
         .getColumnIndex(DISPLAY_NAME)); 

       int hasPhoneNumber = Integer.parseInt(cursor.getString(cursor 
         .getColumnIndex(HAS_PHONE_NUMBER))); 

       if (hasPhoneNumber > 0) { 

        // Query and loop for every phone number of the contact 
        Cursor phoneCursor = contentResolver.query(
          PhoneCONTENT_URI, null, Phone_CONTACT_ID + " = ?", 
          new String[] { contact_id }, null); 

        while (phoneCursor.moveToNext()) { 
         phoneNumber = phoneCursor.getString(phoneCursor 
           .getColumnIndex(NUMBER)); 
         // output.append("\n Phone number:" + phoneNumber); 

        } 

        phoneCursor.close(); 
        Users user = new Users(); 
        user.name = name; 
        user.mobileNumber = phoneNumber; 
        //friendList.add(user); 
        // check if this user/phone number is already added to server friendList 
        if(!dbContectMap.containsKey(phoneNumber)){ 
         mobileList.add(phoneNumber); 
        } 
       } 

      } 

      // outputText.setText(output); 
     } 

     // send to server and update mydb 
     try { 
      JSONObject jsonObj = new JSONObject(); 
      jsonObj.put("action", "addNewContactInFriendList"); 
      jsonObj.put("userid", MyData.getMyDataInstance().getString(MyData.USERID)); 
      JSONArray mobileListArray = new JSONArray(mobileList); 
      jsonObj.put("mobileList", mobileListArray); 

      socket.sendMessage(jsonObj); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 

    /** 
    * The Class CutsomAdapter is the adapter class for Activity ListView. The 
    * currently implementation of this adapter simply display static dummy 
    * contents. You need to write the code for displaying actual contents. 
    */ 
    private class CutsomAdapter extends ArrayAdapter<JSONObject> implements 
    PinnedSectionListAdapter, Filterable { 

     private LayoutInflater layoutInflater; 
     private Context context; 
     List<Users> userList; 
     String radioGroupType; 

     private OnCustomClickListener callback; 

     int itemListSize = 0; 

     ArrayList<JSONObject> listData; 
     ArrayList<JSONObject> tempListData; 

     private FriendsFilter friendsFilter; 


     public CutsomAdapter(Context context, int textViewResourceId, ArrayList<JSONObject> finalArrayList) { 
      super(context, textViewResourceId, finalArrayList); 
      layoutInflater = LayoutInflater.from(context); 
      this.context = context; 
      this.listData = finalArrayList; 
      this.tempListData = finalArrayList; 
     } 

     View convertView = null; 


     class ViewHolder { 
      ImageView headerImage;   
      TextView name; 
      TextView mobile;    
      RadioGroup radioCategory; 
      RadioButton radioButton; 
     } 

     class HeaderViewHolder {     
      TextView categoryName; 

     } 

     public void setContext(Context context) { 
      this.context = context; 
     } 

     @Override 
     public int getCount() { 
      itemListSize = listData.size(); 
      return listData.size(); 
     } 

     public void setListData(List<JSONObject> list) { 
      this.listData = (ArrayList<JSONObject>) list; 
     } 

     @Override 
     public JSONObject getItem(int position) { 
      return listData.get(position); 
     } 

     @Override 
     public boolean isItemViewTypePinned(int viewType) { 
      boolean toBePinned = false; 
      if (viewType == 1) 
       toBePinned = true; 
      // System.out.println("toBePinned: "+toBePinned); 
      return toBePinned; 
     } 

     @Override 
     public int getItemViewType(int position) { 
      JSONObject jo = this.listData.get(position); 
      int k = 0; 
      isHeader = 0; 
      try { 

       String header = jo.getString("headerStr"); 
       if(header != null && "headerStr".equalsIgnoreCase("headerStr")){ 
        k=1; 
        isHeader = 1; 
       } 

      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      return k; 
     } 

     @Override 
     public int getViewTypeCount() { 
      return 2; 
     } 


     /* 
     * (non-Javadoc) 
     * 
     * @see android.widget.Adapter#getItemId(int) 
     */ 
     @Override 
     public long getItemId(int arg0) { 
      return arg0; 
     } 


     /* 
     * (non-Javadoc) 
     * 
     * @see android.widget.Adapter#getView(int, android.view.View, 
     * android.view.ViewGroup) 
     */ 
     @Override 
     public View getView(final int position, View convertViewx, ViewGroup parent) { 

      final JSONObject jObj = (JSONObject) listData.get(position); 

      View convertView = null; 


      //int isHeader = 0; 
      try { 
       //isHeader = jObj.getInt("TYPE"); 
       String header = jObj.getString("headerStr"); 
      } catch (Exception e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } 

      //if (lastCategory.equalsIgnoreCase("start") || !startCategory.equalsIgnoreCase(lastCategory)) { 
      if(isHeader == 1){ 

       final JSONObject jObjX = (JSONObject) listData.get(position); 
       convertView = layoutInflater.inflate(R.layout.friends_activity_sticky_header, 
         null); 
       final HeaderViewHolder headerViewHolder = new HeaderViewHolder(); 

       convertView.setBackgroundColor(Color.WHITE);     
       headerViewHolder.categoryName = (TextView) convertView 
         .findViewById(R.id.header); 

       try { 
        String header = jObjX.getString("headerStr");     
        headerViewHolder.categoryName.setText(header); 

        //headerViewHolder.userProfilePic.seti(); 
       } catch (JSONException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 

      else { 

       try { 

        final ViewHolder holder; 
        if (convertView == null) { 
         convertView = layoutInflater.inflate( 
           R.layout.friends_activity_list_row_layout, null); 
        }   


        holder = new ViewHolder(); 

        holder.headerImage = (ImageView)convertView.findViewById(R.id.headerImage); 
        Picasso.with(context).load(MyData.SERVER_URL+jObj.getString("headerpixurl")).into(holder.headerImage); 

        holder.name = (TextView) convertView.findViewById(R.id.name); 
        holder.name.setText(jObj.getString("name")); 

        holder.mobile = (TextView) convertView.findViewById(R.id.mobile); 
        holder.mobile.setText(jObj.getString("mobile")); 
        if(jObj.getString("category").equalsIgnoreCase("friends")){ 
         holder.radioButton = (RadioButton) convertView.findViewById(R.id.friend); 
         holder.radioButton.setChecked(true); 
        }else if(jObj.getString("category").equalsIgnoreCase("family")){ 
         holder.radioButton = (RadioButton) convertView.findViewById(R.id.family); 
         holder.radioButton.setChecked(true); 
        }else if(jObj.getString("category").equalsIgnoreCase("blocked")){ 
         holder.radioButton = (RadioButton) convertView.findViewById(R.id.block); 
         holder.radioButton.setChecked(true); 

        }else if(jObj.getString("category").equalsIgnoreCase("newuser")){ 
         // dont do any thing let user select , which category he choose for this user 
        } 

        holder.radioCategory = (RadioGroup) convertView.findViewById(R.id.radioCategory); 

        holder.radioCategory.setTag(position); 
        holder.radioCategory.setOnCheckedChangeListener(listener); 

       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       lastCategory = startCategory; 

      } 

      return convertView; 

     } 

     // https://stackoverflow.com/questions/28574000/fill-a-listview-with-radio-button-groups-with-an-onclick-listener-in-the-adapter 
     RadioGroup.OnCheckedChangeListener listener = new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup radioGroup, int id) { 

       RadioButton radio = (RadioButton)radioGroup.findViewById(radioGroup.getCheckedRadioButtonId()); 
       int index = (Integer) radioGroup.getTag(); 
       JSONObject selected = (JSONObject) getItem(index); 

       try{ 
        switch (id) { 


          case R.id.friend: 
           System.out.println("friend"); 
           selected.put("newCategory", "friends"); 
           modifiedContactList.add(selected); 
           //finalContactList.remove(index); 
           break; 
          case R.id.family: 
           System.out.println("family"); 
           selected.put("newCategory", "family"); 
           modifiedContactList.add(selected); 
           //finalContactList.remove(index); 
           break; 
          case R.id.block: 
           System.out.println("block"); 
           selected.put("newCategory", "blocked"); 
           modifiedContactList.add(selected); 
           //finalContactList.remove(index); 
           break; 

        } 

       }catch(Exception ex){ 

       } 
      } 
     }; 

     public void resetData() { 
      listData = tempListData ; 
     } 


     @Override 
     public Filter getFilter() { 
      if (friendsFilter == null) 
       friendsFilter = new FriendsFilter(); 

      return friendsFilter; 
     } 

     // https://github.com/survivingwithandroid/Surviving-with-android/blob/master/ListView_Filter_Tutorial/src/com/survivingwithandroid/listview/SimpleList/PlanetAdapter.java 

     private class FriendsFilter extends Filter { 

      @Override 
      protected FilterResults performFiltering(CharSequence constraint) { 
       FilterResults results = new FilterResults(); 
       // We implement here the filter logic 
       if (constraint == null || constraint.length() == 0) { 
        // No filter implemented we return all the list 
        results.values = tempListData; 
        results.count = tempListData.size(); 
       } 
       else { 
        // We perform filtering operation 
        List<JSONObject> nPlanetList = new ArrayList<JSONObject>(); 

        for (JSONObject p : listData) { 
         try { 
          if (p.getString("name").toUpperCase().startsWith(constraint.toString().toUpperCase())) 
           nPlanetList.add(p); 
         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
        } 

        results.values = nPlanetList; 
        results.count = nPlanetList.size(); 

       } 
       return results; 
      } 

      @Override 
      protected void publishResults(CharSequence constraint, FilterResults results) { 
       // Now we have to inform the adapter about the new list filtered 
       if (results.count == 0) 
        notifyDataSetInvalidated(); 
       else { 
        listData = (ArrayList<JSONObject>) results.values; 
        notifyDataSetChanged(); 
       } 

      } 

     } 

    } 

    private void toList(List<Users> contactList, JSONArray array) throws JSONException { 

     int size = array.length(); 
     for (int i = 0; i < size; i++) { 
      JSONObject jobj = array.getJSONObject(i); 
      Users user = new Users(); 
      user.userid = jobj.getString("userid"); 
      user.name = jobj.getString("name"); 
      //user.category = jobj.getString("category"); 
      user.imageURL = jobj.getString("headerpixurl"); 

      // #### FOR TESTING 
      headerpixurl = jobj.getString("headerpixurl"); 

      user.mobileNumber = jobj.getString("mobile"); 

      contactList.add(user); 
     } 
     //return contactList; 
    } 

    // #### FOR TESTING #### 

    private void testing(JSONArray jArray, String category){ 


     for (count= 0; count < 5; count++) { 

      try { 
       JSONObject jObj = new JSONObject(); 

       jObj.put("userid", "1234"+count); 
       jObj.put("name", "vichi"+count); 
       jObj.put("mobile", "9999"); 
       jObj.put("headerpixurl", headerpixurl); 
       jObj.put("category", category); 
       jArray.put(jObj); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 
    } 

    private void mergeInList(JSONArray jArray){ 

     for(int i=0; i < jArray.length(); i++){ 
      try { 
       finalContactList.add(jArray.getJSONObject(i)); 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 

    } 


    @Override 
    public void eventReceived(String event) throws JSONException { 
     // when we will get return phone number then only we will update sqlite table 
     final JSONObject eventJObjx = new JSONObject(event); 

     if(isActivityInitialized){ 

      FriendsListActivity.super.getActivity().runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         intilizeContactsList(eventJObjx); 
         customFriendListAdapter.notifyDataSetChanged(); 
        }catch(Exception ex){ 

        } 
       } 
      }); 

     }else{ 
      intilizeContactsList(eventJObjx); 
     } 

     //mydb.insertContact(phone, "Y"); 
    } 


    private void intilizeContactsList(JSONObject eventJObjx) throws JSONException{ 
     //#### ALWAYS MAINTAIN THIS ORDER #### 
     finalContactList.clear(); 
     modifiedContactList.clear(); 
     JSONArray newuserArray = eventJObjx.getJSONArray("newuser"); 
     if(newuserArray.length() > 0){ 
      JSONObject jObj1 = new JSONObject(); 
      jObj1.put("headerStr", " New User"); 
      finalContactList.add(jObj1); 
      mergeInList(newuserArray); 
     } 

     JSONArray friendsArray = eventJObjx.getJSONArray("friends"); 
     //testing(friendsArray, "friends"); 
     if(friendsArray.length() > 0){ 
      JSONObject jObj1 = new JSONObject(); 
      jObj1.put("headerStr", " Friends "); 
      finalContactList.add(jObj1); 
      mergeInList(friendsArray); 
     } 

     JSONArray familyArray = eventJObjx.getJSONArray("family"); 
     //testing(familyArray, "family"); 
     if(familyArray.length() > 0){ 
      JSONObject jObj1 = new JSONObject(); 
      jObj1.put("headerStr", " Family "); 
      finalContactList.add(jObj1); 
      mergeInList(familyArray); 
     } 


     JSONArray blockedArray = eventJObjx.getJSONArray("blocked"); 
     //testing(blockedArray, "blocked"); 
     if(blockedArray.length() > 0){ 
      JSONObject jObj1 = new JSONObject(); 
      jObj1.put("headerStr", " Blocked "); 
      finalContactList.add(jObj1); 
      mergeInList(blockedArray); 
     } 


     for(int i=0; i < newuserArray.length(); i++){ 
      //mobileToAddInFriendList.add(mobileListArray.getString(i)); 
      mydb.insertContact(newuserArray.getJSONObject(i).getString("mobile"), "Y"); 
     } 

     isGetResult = true; 
    } 


    protected void setupActionBar() { 
     final ActionBar actionBar = FriendsListActivity.super.getActivity().getActionBar(); 
     actionBar.setDisplayShowTitleEnabled(true); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 
     actionBar.setDisplayUseLogoEnabled(true); 
     actionBar.setLogo(R.drawable.icon); 
     actionBar.setBackgroundDrawable(getResources().getDrawable(
       R.drawable.actionbar_bg)); 
     // actionBar.setDisplayHomeAsUpEnabled(true); 
     // actionBar.setHomeButtonEnabled(true); 
    } 


    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     FriendsListActivity.super.getActivity().getMenuInflater().inflate(R.menu.friends_activity_menu, menu); 
     this.optionsMenu = menu; 
     super.onCreateOptionsMenu(menu, inflater); 

     SearchManager searchManager = (SearchManager) FriendsListActivity.super.getActivity().getSystemService(Context.SEARCH_SERVICE); 
     //SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 

     MenuItem searchItem = menu.findItem(R.id.action_search); 
     SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); 

     searchView.setSearchableInfo(searchManager.getSearchableInfo(FriendsListActivity.super.getActivity().getComponentName())); 
     searchView.setIconifiedByDefault(false); 

     SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() 
     { 
      @Override 
      public boolean onQueryTextChange(String newText) 
      { 
       // this is your adapter that will be filtered 
       customFriendListAdapter.getFilter().filter(newText); 
       System.out.println("on text chnge text: "+newText); 
       return true; 
      } 
      @Override 
      public boolean onQueryTextSubmit(String query) 
      { 
       // this is your adapter that will be filtered 
       customFriendListAdapter.getFilter().filter(query); 
       System.out.println("on query submit: "+query); 
       return true; 
      } 
     }; 
     searchView.setOnQueryTextListener(textChangeListener); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

     super.onOptionsItemSelected(item); 

     switch (item.getItemId()) { 
     case R.id.done: 
      try { 
       JSONObject jsonObj = new JSONObject(); 
       jsonObj.put("action", "moveContact"); 
       jsonObj.put("userid", MyData.getMyDataInstance().getString(MyData.USERID)); 
       JSONArray mobileListArray = new JSONArray(modifiedContactList); 
       jsonObj.put("modifiedList", mobileListArray); 
       socket.sendMessage(jsonObj); 
       modifiedContactList.clear(); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      break; 

     } 
     return super.onOptionsItemSelected(item); 

    } 

} 

вот мой menu.xml файл

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/done" 
     android:icon="@drawable/ic_action_accept" 
     app:showAsAction="always" 
     android:title="@string/upload"/> 
    <item 
     android:id="@+id/action_search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     android:icon="@drawable/ic_launcher" 
     app:showAsAction="always|collapseActionView" 
     android:maxWidth="100dp" 
     android:title="Search"/> 
</menu> 

здесь журнал сниппет:

07-23 15:18:59.015 1841-1841/com.woohoo E/AndroidRuntime? FATAL EXCEPTION: main 
Process: com.woohoo, PID: 1841 
java.lang.NullPointerException 
     at com.woohoo.FriendsListActivity.onCreateOptionsMenu(FriendsListActivity.java:797) 
     at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:1871) 
     at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:2001) 
     at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:278) 
     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:5001) 
     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:785) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
     at dalvik.system.NativeStart.main(Native Method) 

удивительно, что он отлично работает в Eclipse, но дает исключение nullpointer в Android Studio.

Я уже пробовал с такой же конфигурацией, как показано ниже ссылкам: Android - NullPointerException on SearchView in Action Bar

Android search with Fragments

+0

Является ли идентификатор R.id.action_search таким же, как в файле XML R.menu.friends_activity_menu? – GSala

+0

Да ... Я добавил файл menu.xml тоже ... im сходит с ума с 5 дней .. Если у вас есть какой-либо пример, пожалуйста, перешлите мне ... Ваша помощь appriciated – Vichi

+0

Я думаю, вы не можете получить исключение NullPointerException в этой строке: ' SearchView searchView = (SearchView) MenuItemCompat.getActionView (searchItem); ' Можете ли вы опубликовать журнал? – GSala

ответ

0

Проблема в вашем фрагменте. По этой линии:

at com.woohoo.FriendsListActivity.onCreateOptionsMenu(FriendsListActivity.java:797) 

NullPointerException в вашем FriendsListActivity, в частности, в onCreateOptionsMenu, линия 797

Я посмотрел через onCreateOptionsMenu и там может быть несколько вещей, призывающих NullPointerException. Было бы намного проще для вас, чтобы найти линии 797 (проверьте this или this, если вы не знаете, как включить номера строк в вашей IDE)

Также это не хорошая идея, чтобы назвать свой фрагмент FriendsListActivity. Переименуйте его в FriendsListFragment, чтобы избежать путаницы.

+0

Привет, Иван ... Я думаю, вы пропустили, что мой класс FriendsListActivity расширяет фрагмент ... Код класса FriendsListActivity выше. – Vichi

+0

Ну, это нехорошо назвать ваш фрагмент как FriendsListActivity;) Я отредактировал свой ответ. –