我有一个主要活动我正在使用actionbarsherlok,其中有一个菜单项,
public boolean onCreateOptionsMenu(Menu menu) {
// Used to put dark icons on light action bar
menu.add("Refresh")
.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
return false;
}
}).setIcon(R.drawable.ic_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return true;
}
我有一个附加到此活动的片段。我想要的是从主要活动中听菜单项点击。当点击动作栏菜单项时,我想在片段中做一些事情。任何帮助,将不胜感激。提前谢谢..
答案 0 :(得分:3)
首先,id建议在menu.xml文件中创建菜单,然后在onCreateOptionsMenu上对其进行充气。 但无论如何,在你的sherlockFragmentActivity中,在onCreateOptionsMenu中为你的菜单项指定一个id
menu.add(0, REFRESH_ID, 0, "Refresh").setIcon(R.drawable.ic_refresh)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
然后覆盖onOptionsItemSelected并返回false(表示将其传递给片段)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case REFRESH_ID:
return false;
}
return super.onOptionsItemSelected(item);
}
然后在你的sherlockfragment类中调用onCreateOptionsMenu和onOptionsItemSelected,但这次返回true告诉系统菜单项已被处理。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case REFRESH_ID:
refresh();
return true;
}
return super.onOptionsItemSelected(item);
}
答案 1 :(得分:2)
您的片段类应该扩展SherlockFragment
类而不是Fragment
,然后您可以覆盖onCreateOptionsMenu(Menu menu, MenuInflater inflater)
;