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()
方法做了一些魔术?