0
* 已回答!:*事實證明,即使您有一個項目的圖標,也需要標題。將監聽器添加到ActionBar項目,onOptionsItemSelected空指針異常
我目前在我的應用程序中實施(Sherlock)Action Bar。我目前有一個屏幕上的按鈕,刷新我的屏幕視圖,我想將此按鈕移動到我的操作欄中。 onOptionsItemSelected的日誌沒有顯示在LogCat中,但創建的菜單正在顯示。
我不知道爲什麼我得到一個空指針,並且在錯誤日誌中找不到發生null的地方。當我點擊操作欄中的刷新按鈕時,該應用程序只會崩潰,並且一切正常,直到該點。
public boolean onCreateOptionsMenu(Menu menu) {
Log.i("Created Menu", "Yes");
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
Log.i("Got into onOptionsItemSelected", "Yes");
switch(item.getItemId()){
case R.id.action_refresh:
new getFleetList().execute(getFleetListURL);
progressBar.setVisibility(ProgressBar.VISIBLE);
return true;
}
堆棧跟蹤:
07-09 12:52:27.594: W/dalvikvm(23570): threadid=1: thread exiting with uncaught exception (group=0x4132e930)
07-09 12:52:27.601: E/AndroidRuntime(23570): FATAL EXCEPTION: main
07-09 12:52:27.601: E/AndroidRuntime(23570): java.lang.NullPointerException
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.view.menu.MenuItemImpl.toString(MenuItemImpl.java:496)
07-09 12:52:27.601: E/AndroidRuntime(23570): at java.lang.StringBuilder.append(StringBuilder.java:202)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:201)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:980)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:547)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115)
07-09 12:52:27.601: E/AndroidRuntime(23570): at android.view.View.performClick(View.java:4204)
07-09 12:52:27.601: E/AndroidRuntime(23570): at android.view.View$PerformClick.run(View.java:17355)
07-09 12:52:27.601: E/AndroidRuntime(23570): at android.os.Handler.handleCallback(Handler.java:725)
07-09 12:52:27.601: E/AndroidRuntime(23570): at android.os.Handler.dispatchMessage(Handler.java:92)
07-09 12:52:27.601: E/AndroidRuntime(23570): at android.os.Looper.loop(Looper.java:137)
07-09 12:52:27.601: E/AndroidRuntime(23570): at android.app.ActivityThread.main(ActivityThread.java:5041)
07-09 12:52:27.601: E/AndroidRuntime(23570): at java.lang.reflect.Method.invokeNative(Native Method)
07-09 12:52:27.601: E/AndroidRuntime(23570): at java.lang.reflect.Method.invoke(Method.java:511)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-09 12:52:27.601: E/AndroidRuntime(23570): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-09 12:52:27.601: E/AndroidRuntime(23570): at dalvik.system.NativeStart.main(Native Method)
編輯,XML文件:
菜單XML:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_refresh"
android:icon="@drawable/ic_action_refresh"
android:orderInCategory="1"
android:showAsAction="always"
/>
</menu>
這不是一個答案。它應該是一個評論。 – techiServices
@techiServices我已更新我的答案 – Androider
感謝您的回覆。是的,我正在導入這些(導入com.actionbarsherlock.view。*)。不幸的是,這些修復似乎沒有辦法。 onOptionsItemSelected以某種方式得到一個空項目?它沒有進入該方法。 – benzabill