Android 是否可以从单独的片段操纵操作栏?

Android 是否可以从单独的片段操纵操作栏?,android,android-fragments,actionbarsherlock,menuitem,Android,Android Fragments,Actionbarsherlock,Menuitem,我对ActionBars比较陌生,我正在使用actionBarSherlock库。 我知道,当你有经常发生且易于访问的动作时,actionbar的效果最好 背景: 我的操作栏目前通过启用home按钮和OnCreateOptions菜单来工作,该菜单使用日历菜单项(不可见)和设置菜单项来扩展菜单 我有一个调用多个片段的主要活动,比如FragA、FragB、FragC 问题: 是否可能通过某种方式操纵我的菜单项从我的片段,或者至少当它们即将被调用时,我可以“显示”日历菜单项并处理对它的调用 以下是我

我对ActionBars比较陌生,我正在使用actionBarSherlock库。 我知道,当你有经常发生且易于访问的动作时,actionbar的效果最好

背景:

我的操作栏目前通过启用home按钮和OnCreateOptions菜单来工作,该菜单使用日历菜单项(不可见)和设置菜单项来扩展菜单

我有一个调用多个片段的主要活动,比如FragA、FragB、FragC

问题:

是否可能通过某种方式操纵我的菜单项从我的片段,或者至少当它们即将被调用时,我可以“显示”日历菜单项并处理对它的调用

以下是我目前掌握的内容:actionbar\u view.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:orientation="horizontal" >
<Button
    android:id="@+id/b1"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="Stuff" />
</LinearLayout>
我想处理的片段只是扩展了SherlockFragment。。 感谢您的帮助

它是否可能以某种方式从片段中操纵菜单项,或者至少在以这种方式调用菜单项时,我可以“显示”日历菜单项并处理对它的调用

欢迎您的片段调用
SetHasOptions菜单(true)
(例如,从
onCreateView()
),此时将使用
OnCreateOptions菜单()
OnOptions项Selected()
调用它,这与活动非常相似。如果片段可见,则其操作栏项将出现,否则将被删除


因此,典型的模式是让活动定义有效的操作栏项,而不管哪些片段可见,并让片段定义特定于它们的操作栏项。

嗨,Commonware,我尝试了你的建议,但在com.android.internal.view.menu.menuitempl.toString上得到了NullPointerException(MenuItemImpl.java:496)。你知道为什么会发生这种情况吗?使用这个(我得到的确切错误),我刚刚注释掉了导致崩溃的日志。但是现在,当我点击图标时,我什么也没发生…@AminaKhalique:正如在那个问题上所指出的,Neoh在其他地方的评论中提到的,菜单资源中的
元素需要
android:title
属性,即使你没有使用title。嗨,Commonware-我是像Neoh建议的那样添加标题,但是它只在我操作OptionSelected()上的主要活动时起作用,在OptionSelected()上的片段中不起作用……但它现在起作用了。您的操作项必须设置标题
android:title=“”
public void onResume() 
{
    super.onResume();

    actionBar = getSupportActionBar();
    actionBar.setHomeButtonEnabled(true);
    actionBar.setIcon(R.drawable.icon_tsn);...
}