我想要使用弹出的菜单项在行动栏。当我在活动中使用它时,一切都很好,但是当我切换到片段时,我得到:
MenuPopupHelper cannot be used without an anchor我的碎片:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_filter:
createCategoriesPopupMenu(item);
return true;
case R.id.action_sort:
createSortPopupMenu(item);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void createSortPopupMenu(MenuItem item)
{
PopupMenu popup;
final View menuItemView = getView().findViewById(item.getItemId());
Log.wtf("d","item getitemid"+item.getItemId());
if (menuItemView == null)
{
Log.wtf("d","menuItemView==null view"+view.findViewById(item.getItemId()));
Log.wtf("d","menuItemView==null getAc"+getActivity().findViewById(item.getItemId()));
//final View searchItemView = getView().findViewById(R.id.action_search);
//popup = new PopupMenu(getActivity(), searchItemView);
}
popup = new PopupMenu(getActivity(), menuItemView);
Menu menu = popup.getMenu();
addSortMenuItems(menu);
popup.setOnMenuItemClickListener(new OnMenuItemClickListener()
{
@Override
public boolean onMenuItemClick(MenuItem item)
{
onSortMenuItemClick(item);
return true;
}
});
popup.show();
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.issues_list_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}控制台输出(断言):
07-08 14:08:16.659: A/d(1677):项目getitemid2131165600 07-08 14:08:16.659: A/d(1677):menuItemView==null viewnull 07-08 14:08:16.663: A/d(1677年):menuItemView==null getAcnull
我没有忘记setHasOptionsMenu(真);在onCreateView()和view中是onCreateView()的充气布局
发布于 2014-07-08 14:41:23
好的,我在xml菜单文件中找到了解决方案,我们想要在项目中添加弹出,我们需要设置
android:showAsAction="always"因为弹出窗口只适用于操作栏中的图标,而不是菜单中的图标。也可以使用getActivity().findView..。不是getView().findView。
发布于 2019-09-25 20:01:27
你可以改变
final View menuItemView = getView().findViewById(item.getItemId());
至
final View menuItemView = getActivity().findViewById(item.getItemId());
https://stackoverflow.com/questions/24634136
复制相似问题