在我的活动中,我有一个要显示在PopupMenu中的订单对象列表,该菜单有一个包含每个包含订单的唯一客户的SubMenu。我在OnCreate中创建PopupMenu,并且XML中定义的按钮调用此方法将其打开:
public void openOrderMenu(View v){
orderMenu.show();
}
在仿真器中,它按预期工作,我有一个客户的PopupMenu,当单击一个客户时,会出现一个包含他们的订单的子菜单。但是,在实际的电话上,虽然会打开PopupMenu,但是后面有一个完全相同的PopupMenu,并且与一侧重叠。打开菜单和子菜单时也有延迟。
以前有没有人看过这个问题?
用于创建菜单的代码在OnCreate中仅被调用一次:
private void populateOrderMenu(){
orderMenu = new PopupMenu(this, findViewById(R.id.open_order_menu));
Menu items = orderMenu.getMenu();
HashMap<String, SubMenu> customerOrders = new HashMap<>();
for(Order o : orders){
String customer = o.getCustomer().getName();
SubMenu customerSubMenu = customerOrders.get(customer);
if(customerSubMenu == null){
customerSubMenu = items.addSubMenu(customer);
customerOrders.put(customer, customerSubMenu);
}
customerSubMenu.add(o.getName());
}
}