android - ActionBarSherlock SearchView 转换错误

标签 android actionbarsherlock searchview

当我尝试 configure SearchView like in documentation如果使用 ActionBarSherlock,我会收到此错误:

FATAL EXCEPTION: main
java.lang.ClassCastException: android.widget.SearchView cannot be cast to com.actionbarsherlock.widget.SearchView
    at MY_PACKAGE.ACTIVITY.onCreateOptionsMenu(MenuDrawerBase.java:181)
    at android.support.v4.app.Watson.onCreatePanelMenu(Watson.java:45)
    at com.actionbarsherlock.ActionBarSherlock.callbackCreateOptionsMenu(ActionBarSherlock.java:559)
    at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchCreateOptionsMenu(ActionBarSherlockNative.java:60)
    at com.actionbarsherlock.app.SherlockFragmentActivity.onCreatePanelMenu(SherlockFragmentActivity.java:165)
    at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:393)
    at com.android.internal.policy.impl.PhoneWindow.invalidatePanelMenu(PhoneWindow.java:747)
    at com.android.internal.policy.impl.PhoneWindow$1.run(PhoneWindow.java:2913)
    at android.os.Handler.handleCallback(Handler.java:615)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4745)
    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:786)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)

我的代码与示例完全一样:

import com.actionbarsherlock.view.*;
import com.actionbarsherlock.widget.SearchView;
......
@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.main, menu);
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(true);
        searchView.setSubmitButtonEnabled(true);
        return true;
    }

没找到这方面的描述所以问你:这是什么?
顺便说一下,如果我使用 import android.widget.SearchView; 而不是 import com.actionbarsherlock.widget.SearchView; 应用程序编译并使用大于 11 的 API 但我在版本 10 上需要它。

最佳答案

抱歉各位,这是我的错误。
请注意您在菜单 xml 资源中引用的类。在我的例子中是:

<item android:id="@+id/action_search"
    android:title="@string/action_search"
    android:icon="@drawable/action_search_light"
    android:showAsAction="always|collapseActionView"
    android:actionViewClass="android.widget.SearchView"/>

这导致了转换错误。将 actionViewClass 更改为 com.actionbarsherlock.widget.SearchView 并得到了预期的结果!

关于android - ActionBarSherlock SearchView 转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13267384/

相关文章:

android - Visual Studio Android Emulator 无法运行应用程序

android - 我们可以将 SwipeRefreshLayout 与 actionbar sherlock 项目一起使用吗

java - 工具栏中的 Android Searchview 在旧版本中不起作用

android - 如何向 Edittext 或 Searchview 添加弯曲的下划线?

Android DatePicker 无法识别何时通过键入更改了年份

android - 只开启一个activity,没有主activity

android - 使用 Sherlock ActionBar SearchView setOnKeyListener 进行搜索

android - 如何收听 fragment 中的 Actionbarsherlock 菜单项点击?

android - 在 android 中使用 viewpager 的具有多个 fragment 的 SearchView

java - java 枚举的所有实例的模拟方法