我现在有一个看起来像这样的选项菜单:
可以说,如果我单击项目 1,我希望将两个新项目添加到菜单中,如下所示:
我在运行时(当它打开时)这样做时遇到问题,因为 onCreateOptionsMenu 只被调用一次,而 onPrepareOptionsMenu 似乎只在点击手机的菜单按钮时被调用。我只是希望它通过添加这些新项目来刷新。
谢谢你的帮助!
我现在有一个看起来像这样的选项菜单:
可以说,如果我单击项目 1,我希望将两个新项目添加到菜单中,如下所示:
我在运行时(当它打开时)这样做时遇到问题,因为 onCreateOptionsMenu 只被调用一次,而 onPrepareOptionsMenu 似乎只在点击手机的菜单按钮时被调用。我只是希望它通过添加这些新项目来刷新。
谢谢你的帮助!
当您选择一个选项时,它会导致系统关闭选项菜单。这发生在 onOptionsItemSelected() 运行之后。我猜你需要做的是完成整个过程,然后以编程方式再次打开选项菜单,以便调用 onPrepareOptionsMenu()。
尝试这个:
在 onOptionsItemSelected() 中,当用户选择“添加另外两个选项”选项时,在您的活动中设置一个标志但不做任何其他事情。
覆盖 onOptionsMenuClosed()。检查标志是否设置。如果是,则发布后由 UI 线程在其下一次传递中执行。它应该什么都不做,只是再次打开选项菜单,例如
runOnUiThread(new Runnable() { @Override public void run() { openOptionsMenu(); } });
覆盖 onPrepareOptionsMenu()。检查标志是否设置。如果是,则添加两个额外的菜单项并取消设置标志。您需要做一些额外的工作来防止“添加更多项目”菜单项在每次按下时继续添加新项目,除非这是您正在寻找的行为。