Android 4.x上的ActionBarSherlock在SearchView上崩溃

Android 4.x上的ActionBarSherlock在SearchView上崩溃,android,actionbarsherlock,searchview,Android,Actionbarsherlock,Searchview,如果我使用: @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getSupportMenuInflater().inflate(R.menu.main_menu, menu); com.actionbarsherlock.widget.SearchView se

如果我使用:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getSupportMenuInflater().inflate(R.menu.main_menu, menu);
    com.actionbarsherlock.widget.SearchView searchView = new com.actionbarsherlock.widget.SearchView(Activity_TimetablePager.this);
...
系统崩溃,日志如下:

06-22 18:18:23.384: D/SherlockFragmentActivity(3613): [onCreatePanelMenu] featureId: 0, menu: com.android.internal.view.menu.MenuBuilder@af2ca820
06-22 18:18:23.384: D/ActionBarSherlock(3613): [dispatchCreateOptionsMenu] menu: com.android.internal.view.menu.MenuBuilder@af2ca820
06-22 18:18:23.384: D/ActionBarSherlock(3613): [callbackCreateOptionsMenu] menu: com.actionbarsherlock.internal.view.menu.MenuWrapper@af2cc5c8
06-22 18:18:23.384: D/Watson(3613): [onCreatePanelMenu] featureId: 0, menu: com.actionbarsherlock.internal.view.menu.MenuWrapper@af2cc5c8
06-22 18:18:23.384: D/SherlockFragmentActivity(3613): [getSupportMenuInflater]
06-22 18:18:23.384: D/ActionBarSherlock(3613): [getMenuInflater]
06-22 18:18:23.384: D/ActionBarSherlock(3613): [getActionBar]
06-22 18:18:23.384: D/AndroidRuntime(3613): Shutting down VM
06-22 18:18:23.384: W/dalvikvm(3613): threadid=1: thread exiting with uncaught exception (group=0xaecd1908)
06-22 18:18:23.384: E/AndroidRuntime(3613): FATAL EXCEPTION: main
06-22 18:18:23.384: E/AndroidRuntime(3613): android.view.InflateException: Binary XML file line #29: Error inflating class <unknown>
06-22 18:18:23.384: E/AndroidRuntime(3613):     at android.view.LayoutInflater.createView(LayoutInflater.java:613)
06-22 18:18:23.384: E/AndroidRuntime(3613):     at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
06-22 18:18:23.384:D/SherlockFragmentActivity(3613):[onCreatePanelMenu]功能ID:0,功能表:com.android.internal.view.menu。MenuBuilder@af2ca820
06-22 18:18:23.384:D/ActionBarSherlock(3613):[DispatchCreateOptions菜单]菜单:com.android.internal.view.menu。MenuBuilder@af2ca820
06-22 18:18:23.384:D/ActionBarSherlock(3613):[CallbackCreateOptions菜单]菜单:com.ActionBarSherlock.internal.view.menu。MenuWrapper@af2cc5c8
06-22 18:18:23.384:D/Watson(3613):[onCreatePanelMenu]功能ID:0,菜单:com.actionbarsherlock.internal.view.menu。MenuWrapper@af2cc5c8
06-22 18:18:23.384:D/夏洛克碎片活动(3613):[getSupportMenuInflater]
06-22 18:18:23.384:D/ActionBarSherlock(3613):[getMenuInflater]
06-22 18:18:23.384:D/ActionBar夏洛克(3613):[getActionBar]
06-22 18:18:23.384:D/AndroidRuntime(3613):关闭虚拟机
06-22 18:18:23.384:W/dalvikvm(3613):threadid=1:线程退出时出现未捕获异常(组=0xaecd1908)
06-22 18:18:23.384:E/AndroidRuntime(3613):致命异常:主
06-22 18:18:23.384:E/AndroidRuntime(3613):android.view.InflateException:二进制XML文件行#29:膨胀类时出错
06-22 18:18:23.384:E/AndroidRuntime(3613):在android.view.LayoutInflater.createView(LayoutInflater.java:613)
06-22 18:18:23.384:E/AndroidRuntime(3613):在com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
这在Android2.3上可以正常工作,但在4.x上不行。我使用的是ActionBarSherlock 4.3.1,在本例中是viewPager活动。这是一个已知的问题吗


(目前我有一个解决方法,在4.x中使用默认的android SearchView。)

您是否尝试过在菜单xml资源中设置actionView类,并在
onCreateOptions菜单()中获取它的(已创建)实例

例如,在menu.xml中:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/search_item"
          android:title="@string/search"
          android:icon="@drawable/ic_menu_search"
          android:showAsAction="ifRoom|collapseActionView"
          android:actionViewClass="com.actionbarsherlock.widget.SearchView" />

</menu>

我在应用程序中使用了这种模式,在2.x或4.x手机上没有发现任何问题。

好的,问题出在这里:

我没有使用特定于活动的主题


我没有定义:在values-v14/styles.xml中的错误概念中,如果我没有该文件,它将使用旧样式。一旦定义好,一切正常。

基本上我得到了相同的结果。在示例代码中,searchView=null,而searchItem仍然正常。因此,searchItem.getActionView似乎是个问题。您的评论导致了另一个类似的问题。如果我在清单活动定义中使用:android:theme=“@style/theme.Sherlock.Light”,那么它可以工作。但是如果我使用样式:那么它就不会。我没有为v14定义样式(文件夹值-v14不存在)。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.main_menu, menu);

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

    ...
}