如果我使用:
@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)
这适用于Android 2.3,但不适用于4.x.我正在使用ActionBarSherlock 4.3.1,在这种情况下是在viewPager活动中。这是一个已知的问题吗?
(目前我有一个解决方法,我在4.x中使用默认的android SearchView。)
答案 0 :(得分:0)
您是否尝试在菜单xml资源中设置actionView类并在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手机上没有看到任何问题。
答案 1 :(得分:0)
好的,这是问题所在:
我没有使用特定于活动的主题。
我没有定义:在misconception中的values-v14 / styles.xml中,如果我没有该文件,它将使用旧样式。一旦定义,一切正常。