我的片段用特定的选项项替换了父活动选项,但是当我单击该项目时,只有活动的 onOptionItemSelected
被调用,尽管我已经覆盖了片段中的方法。我错过了什么吗?
片段的方法:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "Fragment.onCreateOptionsMenu");
if (mPasteMode) {
menu.clear();
inflater.inflate(R.menu.contexual_paste, menu);
getActivity().getActionBar().setTitle("PasteMode");
}
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "Fragment.onOptionsItemSelected");
switch (item.getItemId()) {
case R.id.context_action_paste:
Toast.makeText(getActivity(),
"It worked ",
Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
活动的方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Log.d(TAG, "MainActivitiy.onOptionsItemSelected");
switch (item.getItemId()) {
case R.id.action_refresh:
Toast.makeText(this, "Action Refresh selected", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}
日志输出:
MainActivity.onCreateOptionsMenu
Fragment.onCreateOptionsMenu
MainActivitiy.onOptionsItemSelected
那么我怎样才能调用片段的 onOptionsItemSelected
呢?
原文由 Nima GT 发布,翻译遵循 CC BY-SA 4.0 许可协议
您没有链接到活动方法中的超类。 Please have
onCreateOptionsMenu()
returnsuper.onCreateOptionsMenu(menu)
, and haveonOptionsItemSelected()
returnsuper.onOptionsItemSelected(item)
(except for the item that you are handling, which should returntrue
表示你已经处理了事件)。