1

我有一個通用的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分支 - 沒有崩潰了...謝謝大家。

+0

檢查匯入 – Blackbelt

+0

你這是什麼意思進口? –

+0

正確導入所有庫和庫項目。源代碼使用正確的導入。 –

回答

0

嘗試:

private editTextSearch; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getSupportMenuInflater().inflate(R.menu.your_menu, menu);  
    menu.getItem(0).setActionView(R.layout.search); //Number of menu item 
    editTextSearch = (EditText) menu.getItem(0).getActionView().findViewById(R.id.edit_search); //Your editetxt search 

    return super.onCreateOptionsMenu(menu); 
} 
相關問題