防止菜单在onItemClicked被触发后立即关闭

4
我搜索了一段时间,但无法找到解决方案。我有一个类似于切换按钮的菜单项,并且希望在用户单击菜单项时立即更新它。
根据Android文档:http://developer.android.com/reference/android/view/Menu.html,有一个名为FLAG_PERFORM_NO_CLOSE的标志..我使用了它。
menu.performIdentifierAction(R.id.myItem, Menu.FLAG_PERFORM_NO_CLOSE);

但你可以想象,什么也没有发生。菜单关闭得像以前一样快,没有更新。
感觉好像Android在菜单视图关闭之前不会更新它。这看起来非常丑陋...用户在重新打开菜单之前无法获得选择项目的反馈。
有人能帮忙解决如何让它工作吗?
对我来说最好的解决方案是,菜单项更新并且菜单在200毫秒后关闭,而不是立即关闭。
更新
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    // TODO Auto-generated method stub
return super.onMenuItemSelected(featureId, item);

这是一个在选择项目时触发的新方法。看起来菜单有自己的处理程序在幕后运作。我找不到任何可以延迟菜单关闭甚至更新它的东西...希望现在清楚了。

将 handler 应用于你想要延迟一点的代码上,它就能够正常工作。 - Sarthak Mittal
@SarthakMittal 好的,但是似乎菜单项在菜单关闭之前不会更新。我的手机不是旧的。在我看来,菜单保持足够长时间打开,以便我能够意识到菜单项是否已更新..希望你能理解我的意思。 - MMike
我理解你的意思,Mike,但我并不完全理解你的问题。 - Sarthak Mittal
@SarthakMittal 更新了问题。感谢您的时间。 - MMike
你的问题我还是没有完全理解,你是想禁用菜单项的点击功能吗? - Sarthak Mittal
@SarthakMittal 不,我得到了像菜单项一样的切换按钮,当用户点击它时,菜单项的图标应该切换。但是当他点击时,项目不会切换,因为菜单没有更新。但是当用户第二次打开菜单时,图标就会更新。这一切都只是关于视图的更新。按钮背后的功能立即就能工作,那不是问题。 - MMike
1个回答

0

看一下这个:

  new Handler().postDelayed(new Runnable() {
  @Override
  public void run() {
  //write code you want to delay by 200 ms
  }
  }, 200);

如需了解 Handler 的工作原理,您可以访问 Android 开发者网站。


我只有一种想法,尝试在你编写更改UI代码的方法调用下方添加menu_object.requestLayout()。 - Sarthak Mittal
不可能的。像requestLayout()这样的菜单没有有效的方法。但无论如何,谢谢你。 - MMike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接