2013-09-30 4 views
0

Я добавил функцию поиска в свой ActionBar. Я вижу значок поиска, но не могу показать диалоговое окно поиска в actionBar. Я пробовал модифицировать файл v14 abs_themes, как рекомендовано другими, без везения. Мое меню XML выглядит следующим образом:SearchView и ActionbarSherlock

<item 
    android:id="@+id/search" 
    android:title="search sites" 
    android:icon="@drawable/action_search" 
    android:showAsAction="collapseActionView|always" 
    android:actionViewClass="com.ActionbarSherlock.widget.SearchView" > 
</item> 
<item 
    android:id="@+id/grid" 
    android:icon="@drawable/images_on" 
    android:showAsAction="ifRoom" 
    android:title="Grid"> 
</item> 

В onCreateOptionsMenu, я вставил:

public boolean onCreateOptionsMenu(Menu menu) { 

    this.menu = menu; 

    MenuInflater inflater = getSupportMenuInflater(); 
    inflater.inflate(R.menu.sites_actionbar, menu); 

    // Associate searchable configuration with the SearchView 
    SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); 
    SearchView searchView = (SearchView)menu.findItem(R.id.search).getActionView(); 


    if (searchView != null) { 

     searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
     searchView.setIconifiedByDefault(true); 
     searchView.setSubmitButtonEnabled(true); 

     searchView.setOnQueryTextListener(this); 

    } 

я получаю следующее ClassNotFoundException:

09-30 17:39:06.992: W/MenuInflater(17111): Cannot instantiate class: com.ActionbarSherlock.widget.SearchView 
09-30 17:39:06.992: W/MenuInflater(17111): java.lang.ClassNotFoundException: Didn't find class "com.ActionbarSherlock.widget.SearchView" on path: /data/app/com.mcgarrybowen.CPC-1.apk 
09-30 17:39:06.992: W/MenuInflater(17111): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65) 
09-30 17:39:06.992: W/MenuInflater(17111): at java.lang.ClassLoader.loadClass(ClassLoader.java:501) 
09-30 17:39:06.992: W/MenuInflater(17111): at java.lang.ClassLoader.loadClass(ClassLoader.java:461) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.actionbarsherlock.view.MenuInflater$MenuState.newInstance(MenuInflater.java:486) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.actionbarsherlock.view.MenuInflater$MenuState.setItem(MenuInflater.java:447) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.actionbarsherlock.view.MenuInflater$MenuState.addItem(MenuInflater.java:468) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.actionbarsherlock.view.MenuInflater.parseMenu(MenuInflater.java:190) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.actionbarsherlock.view.MenuInflater.inflate(MenuInflater.java:112) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.mcgarrybowen.CPC.SiteCategoryListActivity.onCreateOptionsMenu(SiteCategoryListActivity.java:67) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:44) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:560) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:64) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:164) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:464) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:851) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:258) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.view.Choreographer.doFrame(Choreographer.java:531) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.os.Handler.handleCallback(Handler.java:725) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.os.Looper.loop(Looper.java:137) 
09-30 17:39:06.992: W/MenuInflater(17111): at android.app.ActivityThread.main(ActivityThread.java:5328) 
09-30 17:39:06.992: W/MenuInflater(17111): at java.lang.reflect.Method.invokeNative(Native Method) 
09-30 17:39:06.992: W/MenuInflater(17111): at java.lang.reflect.Method.invoke(Method.java:511) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
09-30 17:39:06.992: W/MenuInflater(17111): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
09-30 17:39:06.992: W/MenuInflater(17111): at dalvik.system.NativeStart.main(Native Method) 

ответ

1

имена классов чувствительны к регистру - вы должны использовать

android:actionViewClass="com.actionbarsherlock.widget.SearchView" 

Обратите внимание на отсутствие заглавных букв в actionbarsherlock.

+0

Я внес изменения, но теперь я получаю то же самое, не могу создать класс класса com.actionbarsherlock.widget.SearchView. Я прочитал другие сообщения stackoverflow и попробовал изменить класс темы xml в ActionBarSherlock. Не уверен, что попробовать дальше. – Jack120

Смежные вопросы