2013-06-22 101 views
0

如果我使用:用以下日志ActionBarSherlock崩溃在Android 4.x的

@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: [email protected] 
06-22 18:18:23.384: D/ActionBarSherlock(3613): [dispatchCreateOptionsMenu] menu: [email protected] 
06-22 18:18:23.384: D/ActionBarSherlock(3613): [callbackCreateOptionsMenu] menu: [email protected] 
06-22 18:18:23.384: D/Watson(3613): [onCreatePanelMenu] featureId: 0, menu: [email protected] 
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) 

能正常工作在Android 2.3,但不支持4.x我在使用ActionBarSherlock 4.3.1,在这种情况下在viewPager活动。这是一个已知的问题?

(目前我有一个替代方案,我用的是默认的Android搜索查看在4.x版)

回答

0

你有没有尝试设置的actionView类菜单中的XML资源并获得它的一个(已经创建)实例内部onCreateOptionsMenu()

例如,在你的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> 
在你的代码

然后:

@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(); 

    ... 
} 

我在我的应用程序中使用这个确切的模式,还没有看到2的任何问题。 x或4.x手机。

+0

基本上我得到了同样的结果。在你的示例代码中,searchView = null,而searchItem仍然可以。因此,searchItem.getActionView似乎是问题所在。 –

+2

你的评论导致另一个类似的问题。如果我在清单活动定义中使用:android:theme =“@ style/Theme.Sherlock.Light”,那么它就起作用了。但如果我使用样式: