Android:onOptionsItemSelected不';不能从片段中调用

Android:onOptionsItemSelected不';不能从片段中调用,android,android-fragments,android-actionbar,actionbarsherlock,Android,Android Fragments,Android Actionbar,Actionbarsherlock,我知道已经有人问过这个问题,但提议的解决方案都不适合我 我希望从片段调用此方法: public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState) { View view = inflater.inflate(R.layout.my_clock_layout, container, false); listView = (List

我知道已经有人问过这个问题,但提议的解决方案都不适合我

我希望从片段调用此方法:

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saveInstanceState) {
        View view = inflater.inflate(R.layout.my_clock_layout, container, false);
        listView = (ListView) view.findViewById(R.id.clock_list);
        listView.setAdapter(new ClockAdapter(this.getActivity()));



        return view; 
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
        case R.id.add_alarm:
            Fragment newContent = new AddAlarmFragment();
            if (getActivity() instanceof MenuMainActivity) {
                MenuMainActivity mma = (MenuMainActivity) getActivity();
                mma.switchContent(newContent);
            } 
        }
        return super.onOptionsItemSelected(item);
    }

}   
然后在
菜单umainactivity
中调用此方法:

@Override   
public boolean onOptionsItemSelected(MenuItem item) {
    switch(item.getItemId()) {
    case android.R.id.home:
        toggle();
        return true;
    case R.id.add_alarm:
        return false;
    }
    return super.onOptionsItemSelected(item);
}
不幸的是,这不起作用,而且片段方法没有被调用

问题可能是什么


提前谢谢

在片段
onCreate
中,确保您正在调用
sethaspoptions菜单(true)


编辑请确保您的
公共布尔onoptionItemSelected(MenuItem项)
实际上是
公共布尔onoptionItemSelected(com.actionbarsherlock.view.MenuItem项)
。或者在片段
onCreate
中将
import
更新到此
MenuItem
中,确保调用
sethaseoptions菜单(true)


编辑请确保您的
公共布尔onoptionItemSelected(MenuItem项)
实际上是
公共布尔onoptionItemSelected(com.actionbarsherlock.view.MenuItem项)
。或者将
导入
更新到此
菜单项

,因此我发现了错误。我的
活动
正在扩展一个
SherlockFragmentActivity
,但该片段正在扩展正常的
片段
,而不是
SherlockFragmentActivity
。随着
Fragment
扩展
SherlockFragment
它现在可以工作了。
谢谢大家的帮助

所以我发现了我的错误。我的
活动
正在扩展一个
SherlockFragmentActivity
,但该片段正在扩展正常的
片段
,而不是
SherlockFragmentActivity
。随着
Fragment
扩展
SherlockFragment
它现在可以工作了。

谢谢大家的帮助

我在片段中的onCreateView中调用了它。你的意思是我应该在那里或者更确切地说在菜单中不活动吗?我总是在片段
onCreate
中调用它。不要在活动中打电话我编辑了我的答案并发布了更多的代码以使其更清晰。我也在调用onCreate方法。提前谢谢!谁是你活动的家长
FragmentActivity
ActionBarActivity
SherlockActivity
Activity
?这是SherlockFragmentActivity,我在片段中的onCreateView中调用了它。你的意思是我应该在那里或者更确切地说在菜单中不活动吗?我总是在片段
onCreate
中调用它。不要在活动中打电话我编辑了我的答案并发布了更多的代码以使其更清晰。我也在调用onCreate方法。提前谢谢!谁是你活动的家长
FragmentActivity
ActionBarActivity
SherlockActivity
Activity
?这是SherlockFragmentActivity只是为了确定,你是否用菜单xml文件在
OnCreateOptions菜单(…)
中扩展了菜单?@vilpe89是的,在我的基本活动中我有这个方法:public boolean onCreateOptions菜单(菜单){getSupportMenuInflater().inflate(R.Menu.main,Menu);返回super.onCreateOptions菜单(Menu);}当片段的方法没有被调用时?@vilpe89当你点击R.id.add\u Alarm时它没有被调用,你是如何测试它的,日志记录,断点,还是盲目地依赖于
switchContent()
method有一些神奇的功能吗?请确定,您是否使用菜单xml文件在
onCreateOptions菜单(…)
中对菜单进行了膨胀?@vilpe89是的,在我的基本活动中,我有这个方法:public boolean onCreateOptions菜单(菜单菜单菜单菜单){getSupportMenuInflater()。膨胀(R.menu.main,菜单);返回super.onCreateOptions菜单(菜单)}片段的方法什么时候没有被调用?@vilpe89当你点击R.id.add\u Alarm时它就没有被调用,你是如何测试它的,日志记录,断点,还是盲目地依赖
switchContent()
方法做了一些魔术?