2013-04-17 158 views
0

我想福尔摩斯默认搜索福尔摩斯搜索widget.The图标操作栏中显示福尔摩斯操作栏上,但它的onclick关闭力。我的logcat下面空指针异常

04-17所示11:44:48.877:E/AndroidRuntime(530):致命例外:main 04-17 11:44:48.877:E/AndroidRuntime(530):java.lang.NullPointerException 04-17 11:44:48.877:E/AndroidRuntime(530):at com.android.internal.view.menu.MenuItemImpl.toString(MenuItemImpl.java:490) 04-17 11:44:48.877:E/AndroidRuntime(530):at java.lang.StringBuilder .append(StringBuilder.java:202) 04-17 11:44:48.877:E/AndroidRuntime(530):at com.actionbarsherlock.app.S herlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:201) 04-17 11:44:48.877:E/AndroidRuntime(530):at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:950) 04 -17 11:44:48.877:E/AndroidRuntime(530):at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 04-17 11:44:48.877:E/AndroidRuntime 530):at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 04-17 11:44:48.877:E/AndroidRuntime(530):at com.android.internal.view。 menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 04-17 11:44:48.877:E/AndroidRuntime(530):at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:490) 04-17 11:44:48.877:E/AndroidRuntime(530):at com.android.internal.view.menu.ActionMe nuItemView.onClick(ActionMenuItemView.java:108) 04-17 11:44:48.877:E/AndroidRuntime(530):at android.view.View.performClick(View.java:3511) 04-17 11:44: 48.877:E/AndroidRuntime(530):在android.view.View $ PerformClick.run(View.java:14105) 04-17 11:44:48.877:E/AndroidRuntime(530):在android.os.Handler。 handleCallback(Handler.java:605) 04-17 11:44:48.877:E/AndroidRuntime(530):at android.os.Handler.dispatchMessage(Handler.java:92) 04-17 11:44:48.877: E/AndroidRuntime(530):在android.os.Looper.loop(Looper.java:137) 04-17 11:44:48.877:E/AndroidRuntime(530):在android.app.ActivityThread.main(ActivityThread。 java:4424) 04-17 11:44:48.877:E/AndroidRuntime(530):at java.lang.reflect.Method.invokeNative(Native Method) 04-17 11:44:48.877: E/AndroidRuntime(530):at java.lang.reflect.Method.invoke(Method.java:511) 04-17 11:44:48.877:E/AndroidRuntime(530):at com.android.internal.os。 ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784) 04-17 11:44:48.877:E/AndroidRuntime(530):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 04 -17 11:44:48.877:E/AndroidRuntime(530):在dalvik.system.NativeStart.main(本机方法)

的menu.xml文件

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

    <item android:id="@+id/menu_search" 
    android:actionViewClass="com.actionbarsherlock.widget.SearchView" 
    android:icon="@android:drawable/ic_menu_search" 
    android:showAsAction="always|collapseActionView" 
    /> 
    </menu> 

在夏洛特活性的代码

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    MenuInflater inflater = getSupportMenuInflater(); 
      inflater.inflate(R.menu.tvguide_menu, menu); 
    } 
    public boolean onOptionsItemSelected(MenuItem item) 
{ 
     Log.e("", "itemselected" +item.getItemId()); 
     switch(item.getItemId()) 
     { 
      case R.id.menu_search: 
       Toast.makeText(TVBuddyMainActivity.this,"search selected", Toast.LENGTH_LONG).show(); 
       Intent intent = new Intent(TVBuddyMainActivity.this,CustomSearch.class); 
       startActivity(intent); 
       break; 
     } 
    return true; 
} 

请帮助我的logcat ....

回答

0

正是在ActionBarSherlock的4.3.0版中的错误,我固定它以这样的方式

--- a/actionbarsherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java 
+++ b/actionbarsherlock/src/com/actionbarsherlock/app/SherlockFragmentActivity.java 
@@ -198,7 +198,7 @@ public class SherlockFragmentActivity extends Watson implements OnActionModeStar 

    @Override 
    public final boolean onMenuItemSelected(int featureId, android.view.MenuItem item) { 
-  if (BuildConfig.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item); 
+  // if (BuildConfig.DEBUG) Log.d(TAG, "[onMenuItemSelected] featureId: " + featureId + ", item: " + item); 

     if (featureId == Window.FEATURE_OPTIONS_PANEL && !mIgnoreNativeSelected) { 
      mIgnoreNativeSelected = true;