我有一个通用的SherlockListFragment
,用于我的应用程序在不同情况下。 该片段有一个选项菜单项(一个SearchView
),这里是SearchView
创建的代码:SherlockListFragment'onCreateOptionMenu'在android 2.3.3上崩溃
@Override
public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.all_places, menu);
final MenuItem searchMenuItem = menu.findItem(R.id.action_search);
searchMenuItem.setOnActionExpandListener(this);
final SearchView searchView = (SearchView) searchMenuItem
.getActionView();
searchView.requestFocusFromTouch();
searchView.setQueryHint(getString(R.string.search_query_hint));
searchView.setOnQueryTextListener(this);
}
的问题是,这样的一个片段的实例在一个ViewPager被使用,然后滑动到它时,该应用程序崩溃(仅适用于Android 2.3.3的HTC Desire),但适用于ICS和JB设备。顺便说一句,当手动附加片段(没有ViewPager
)时,不会发生崩溃。
这里是崩溃的堆栈跟踪:
java.lang.NullPointerException
at android.view.View.dispatchRestoreInstanceState(View.java:6132)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1213)
at android.view.View.restoreHierarchyState(View.java:6116)
at com.actionbarsherlock.internal.view.menu.MenuBuilder.restoreActionViewStates(MenuBuilder.java:361)
at com.actionbarsherlock.internal.ActionBarSherlockCompat.preparePanel(ActionBarSherlockCompat.java:503)
at com.actionbarsherlock.internal.ActionBarSherlockCompat.dispatchInvalidateOptionsMenu(ActionBarSherlockCompat.java:272)
at com.actionbarsherlock.app.SherlockFragmentActivity.invalidateOptionsMenu(SherlockFragmentActivity.java:150)
at com.actionbarsherlock.app.SherlockFragmentActivity.supportInvalidateOptionsMenu(SherlockFragmentActivity.java:156)
at android.support.v4.app.Fragment.setMenuVisibility(Fragment.java:781)
at android.support.v4.app.FragmentStatePagerAdapter.setPrimaryItem(FragmentStatePagerAdapter.java:151)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1009)
at android.support.v4.view.ViewPager.populate(ViewPager.java:880)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:238)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:144)
at android.app.ActivityThread.main(ActivityThread.java:4937)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
at dalvik.system.NativeStart.main(Native Method)
我真的坚持了这个问题...任何帮助将是巨大的。
编辑
切换到ActionBarSherlock Dev分支 - 没有崩溃了...谢谢大家。
检查汇入 – Blackbelt
你这是什么意思进口? –
正确导入所有库和库项目。源代码使用正确的导入。 –