- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我无法让 onPrepareOptionsMenu()
正常工作。无论我尝试什么,我都无法调用它。
我的应用程序的架构如下:我的主 Activity 包含一个包含 ViewPager 的 Fragment,ViewPager 又具有四个子 Fragment 实例。目前,我正在(成功地)使用 onCreateOptionsMenu()
填充 Activity 中的初始选项菜单,但我希望添加一些与每个 Activity 子 Fragment 相对应的额外选项。
在我的子 fragment 中,我确保 setHasOptionsMenu(true)
在 onCreate()
中被调用并且 getSherlockActivity().supportInvalidateOptionsMenu( )
在 onActivityCreated()
中被调用。在主 Activity 中,onCreateOptionsMenu()
在子 Fragment 实例化后调用一次,无论它们是否包含 supportInvalidateOptionsMenu()
。每当替换 Pager 中的 Fragment 时,它随后都会再次调用。
我已经尝试将 onPrepareOptionsMenu()
代码向上移动到父 Fragment 和主 Activity - 无济于事,这表明问题与我使用嵌套不相关 fragment 。我还尝试将 onCreateOptionsMenu()
方法从主 Activity 向下移动到两个 fragment ,在那里它未被调用。
如果有人知道这里发生了什么,我将不胜感激,因为我已经坚持了两天了。
更新 - 我已经弄清楚现在的问题是什么,只是我仍然不确定如何解决它。我在 4.2 上进行测试,似乎 onCreateOptionsMenu()
在 Activity 中的 onResume()
之后被调用 - 如 onCreateOptionsMenu called after onResume on JB 4.2 所示.我认为这意味着 fragment 无法调用 onPrepareOptionsMenu()
,因为菜单在它们被实例化之后才存在。那么我该如何解决呢?
最佳答案
这是一个不可避免的 ActionBarSherlock 问题,我在 github 上查看它的问题页面时忽略了它。基本上,嵌套 fragment 中选项菜单的功能尚未添加,请参阅:https://github.com/JakeWharton/ActionBarSherlock/issues/828 .我现在的解决方案是用评论中修改过的文件之一替换 Watson.java。
关于android - onPrepareOptionsMenu 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17196309/
如何编写这个 switch 语句?我想就以下各项发表两点声明。 public boolean onPrepareOptionsMenu(Menu menu) { switch(?????){ case
我需要在菜单项的单击事件期间动态更改菜单项。 所以我在一个 Activity 中实现了onOptionsItemSelected。 public class ResultActivity extend
我正在尝试使用 onPrepareOptionsMenu,当我按下菜单时,它什么也没做!!我哪里错了? 还有,我用的是finish();命令对吗?当用户按下 exit(menuX) 时,我希望他们完全
我无法让 onPrepareOptionsMenu() 正常工作。无论我尝试什么,我都无法调用它。 我的应用程序的架构如下:我的主 Activity 包含一个包含 ViewPager 的 Fragme
我有一个 Activity ,它在顶部包含一个操作栏,在底部包含一个独立的工具栏。我想根据某个变量的值启用/禁用此工具栏中的项目。请注意,这是在 fragment 内。 如果我有一个普通的操作栏菜单,
我想为 Android 制作 Option Menu,我访问过这个网站。在他们的脚本中,我找到了 onPrepareOptionsMenu,我尝试使用带有和不带有 onPrepareOptionsMe
我想在我的应用程序顶部制作一个菜单,就像在 AS 的 xml 中显示的那样,但在 Android 6.0 中,它位于底部。我怎么解决这个问题?谢谢。 我尝试了很多方法,例如更改代码、添加 androi
我试图在按下 Map Activity 中的后退按钮后调用 MainActivity 中的 onPrepareOptionsMenu(),但它在创建一次后未被调用。根据文档,必须在显示菜单之前立即调用
public class BFragmentTab extends Fragment { @Override public View onCreateView(LayoutInfla
在我的 Activity 的 onCreateOptionsMenu 方法中,我只是扩展我的菜单布局文件并附加它。 我想根据全局变量的值 a 显示/隐藏一些菜单项,我在 onPrepareOption
每次我调用 getActivity().invalidateOptionsMenu(); 我的应用程序都会因空指针异常而取消赎回权。 我的目标是根据通过抽屉导航中的 ListView 调用的 frag
我正在开发一个项目,该项目允许用户作为访客或注册用户加入。 有应用范围user具有当前用户类型的 LiveData 的对象 private val _isGuest = MutableLiveData
我想在运行时切换 ActionBar 上“向上”按钮(左箭头)的可见性。我尝试使用项目 id R.id.home 访问 onPrepareOptionsMenu 中的按钮,因为此 id 在 onOpt
当我使用 onPrepareOptionsMenu 添加菜单项时,菜单项会在操作栏中复制其自身。我正在使用 fragment 并在主要 Activity 的 ActionBar 中创建初始菜单,如下所
@Override public void onCreateOptionsMenu(Menu menu,MenuInflater inflater){ Log.d("Does"
在我的应用程序中,我经常启用/禁用菜单条目,并让它们在 onPrepareOptionsMenu 中可见。 今天我开始在我的一些 Android 2.x 应用程序中添加 android:showAsA
我需要根据 API 调用响应启用和禁用菜单项,并且每次出现菜单时都必须调用它。 我需要异步任务,因为我必须显示进度条 @Override public boolean onPrepar
我正在覆盖 onPrepareOptionsMenu 以隐藏和显示菜单项。使用 API 级别 16 模拟器进行测试时;第一次打开菜单时不会调用 onPrepareOptionsMenu。但是当我重新打
当我尝试更新菜单中的 MenuItem 时,我收到了 IndexOutOfBoundsException。 我在 xml 中添加了 menu_item,当 enable() == false 时我可以
Activities 很清楚 - 该方法在菜单显示之前被调用。但是如果 ActionBar总是显示 呢?如何触发它被调用来动态更新menuItems? 最佳答案 按照文档的建议,使用 invalida
我是一名优秀的程序员,十分优秀!