我知道已经提出过这个问题,但是所提议的解决方案都不适用于我。
我希望从片段中调用此方法:
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);
}
}
然后在MenuMainActivity
中调用此方法:
@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);
}
遗憾的是,这不起作用,并且不会调用Fragment方法。
问题可能是什么?
提前致谢!
答案 0 :(得分:3)
在您的片段onCreate
中,请确保您正在呼叫setHasOptionsMenu(true);
编辑请确保您的public boolean onOptionsItemSelected(MenuItem item)
实际为public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item)
。或者将import
更新为此MenuItem
答案 1 :(得分:1)
所以我发现了自己的错误。我的Activity
延长了SherlockFragmentActivity
,但片段正在延伸正常Fragment
而不是SherlockFragment
。 Fragment
扩展SherlockFragment
现在可以正常使用。
感谢大家的帮助!