2014-11-17 2 views
0

Я пытаюсь реализовать функцию поиска в моей ActionBar, но он не работает, как ожидалось, когда я запустить приложение я получаю следующее сообщение об ошибке:Android NullPointerException на SearchView с помощью ActionBar

java.lang.NullPointerException 
      at br.com.representemais.FragmentClientes.onCreateOptionsMenu(FragmentClientes.java:80) 

линии 80 : searchView.setQueryHint (this.getString (R.string.search));

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     shouldExecuteOnResume = false; 

     super.onCreate(savedInstanceState); 
     // TODO Auto-generated method stub 
     setContentView(R.layout.fragment_cliente); 




    } 



@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // TODO Auto-generated method stub 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu, menu); 


    searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(Menus.PROCURAR)); 
    searchView.setQueryHint(this.getString(R.string.search)); 

    ((EditText)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)) 
    .setHintTextColor(getResources().getColor(R.color.white)); 
    searchView.setOnQueryTextListener(OnQuerySearchView); 



    menu.findItem(Menus.PROCURAR).setVisible(true); 



    return super.onCreateOptionsMenu(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/menu_search" 
     android:icon="@drawable/ic_action_search" 
     android:title="@string/search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="ifRoom|collapseActionView" 
     /> 





</menu> 
+0

Вы пытались использовать R.id.menu_search вместо Menus.PROCURAR? – bhowden

+0

@bhowden да, я пробовал это – John

+0

Вы пытались получить его с помощью 'this.findViewById (R.id.menu_search)'? –

ответ

0

Какая линия дает вам ошибку в точности?

Попробуйте сделать это, если ваш уровень API является 11 или выше

SearchView search = (SearchView) menu.findItem(R.id.menu_search).getActionView();

Также я думаю, что EditText, который вы устанавливаете hintTextColor фактически TextView

TextView searchText = (TextView)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);

см этот вопрос: SearchView edittext is always null

0

Только что нашел, что мой p roblem был, мне пришлось продлить мой класс до ActionBarActivity, теперь он работает, спасибо вам всем.