Я пытаюсь добавить Search-ActionView в свое приложение (как описано здесь http://developer.android.com/guide/topics/search/search-dialog.html#UsingSearchWidget). К сожалению, я продолжаю получать исключение NullPointerException, и мне сложно определить, что на самом деле происходит неправильно.Как добавить SearchWidget в ActionBar?
Я создал поисковую конфигурацию и операцию поиска, как показано на странице Android. Мой файл меню .xml выглядит следующим образом:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
...
<item
android:id="@+id/menu_item_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/icon_search"
android:showAsAction="always"
android:title="@string/action_bar_button_search">
</item>
</menu>
Это метод, в котором выбрасывается Исключение:
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.action_bar, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.menu_item_search).getActionView();
// NullPointerException thrown here; searchView is null.
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
return super.onCreateOptionsMenu(menu);
}
Полный трассировки стека:
FATAL EXCEPTION: main
java.lang.NullPointerException
at com.example.activities.Test.onCreateOptionsMenu(Test.java:41)
at android.app.Activity.onCreatePanelMenu(Activity.java:2444)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:408)
at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:759)
at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:2997)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4507)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
at dalvik.system.NativeStart.main(Native Method)
Можете ли вы опубликовать весь код? у вас есть возможность поиска с возможностью поиска и поиска, как описано в документе? – rajpara
, который является строкой Test.java:41? –
Как написано выше: поиск и xml-поиск и активность поиска устанавливаются и добавляются в манифест. Строка 41 - это та, которую я прокомментировал с помощью «NullPointerException, которое было выбрано здесь, searchView равно null». – Taig