我有一個主要的SherlockFragmentActivity顯示actionbarsherlock只有一個菜單項(「完成」)。我在執行這個菜單,自定義視圖:Monodroid ActionBarSherlock OnCreateOptionsMenu不叫
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_menu_done"
android:icon="@drawable/checkmark"
android:title="Done"
android:showAsAction="always|withText"
android:actionLayout="@layout/menu_done_extended" />
</menu>
而這裏menu_done_extended.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_container"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="14dp"
android:paddingBottom="14dp"
android:gravity="center"
android:text="Done"
android:drawableLeft="@drawable/checkmark"
android:background="@drawable/selectable_background_zando_theme_red"
android:clickable="true" />
<View
android:layout_width="20dp"
android:layout_height="wrap_content" />
</LinearLayout>
在我的活動,我重寫OnCreateOptionsMenu顯示菜單:
public override bool OnCreateOptionsMenu(ActionBar_Sherlock.View.IMenu menu)
{
SupportMenuInflater.Inflate(Resource.Layout.menu_done, menu);
return true;
}
而且最後我重寫OnOptionsItemSelected(在主要活動中)來處理菜單點擊事件。
public override bool OnOptionsItemSelected(ActionBar_Sherlock.View.IMenuItem item)
{
switch(item.ItemId)
{
case Resource.Id.action_menu_done:
{
// do some job....
return true;
}
break;
}
return base.OnOptionsItemSelected(item);
}
但是,當我點擊菜單項,OnOptionsItemSelected從不被調用。我指出我的主要活動包含一個片段。但是這個片段不會修改主菜單(從片段調用的OnCreateOptionsMenu或OnOptionsItemSelected沒有覆蓋)。我已經通過互聯網在stackoverflow搜索,但大多數的問題和解決方案,我發現是關於菜單項點擊事件從片段沒有被調用。我的情況實際上是這個事件在主要活動中不叫。我看不到我做錯了什麼。 任何提示或幫助將不勝感激。 謝謝
編輯
在我OnCreateOptionsMenu,我加了這樣的菜單(用於測試目的):
menu.AddSubMenu("Test");
對於這個特殊的菜單,這似乎是一個下拉菜單從右上角的3點菜單中,OnOptionsItemSelected被正常調用。所以我認爲可能會出現錯誤的xml,我膨脹顯示菜單。