我有一个 fragment 类,它扩展Fragment
并调用setHasOptionsMenu
来参与菜单。该类还实现了 onCreateOptionsMenu
、onPrepareOptionsMenu
和 onOptionsItemSelected
。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
....
}
我在我的 Activity 中使用 FragmentTransaction
动态加载这个 fragment (扩展 FragmentActivity
)。
但是,没有一个菜单回调(onCreateOptionsMenu
、onPrepareOptionsMenu
和 onOptionsItemSelected
)被调用(我已经在这些回调中调试了一些断点)方法)并且菜单不显示。
我错过了什么吗?我需要在我的 Activity 中添加一些东西吗?
我正在使用 Android 兼容性库,使用 L11 SDK 进行编译并在 Xoom 中进行测试。
编辑:我发现了问题。我的 AndroidManifest 的目标是 L11,这似乎隐藏了菜单按钮并防止调用回调。但是,如果我从 list 中删除它,我会失去一些我需要的其他功能(例如列表中的激活状态)。有谁知道如何在不从 list 中删除 targetSdkVersion=11
的情况下解决此问题(启用菜单按钮)?
最佳答案
阿罗梅罗, 不要忘记使用方法的 fragment 版本覆盖 onCreateOptionsMenu,类似于:
@Override
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.queue_options, menu);
super.onCreateOptionsMenu(menu, inflater);
}
顺便说一句,这会进入 fragment ,并添加到 Activity 的膨胀菜单(如果有的话)。我自己也有同样的问题,直到我弄清楚了。
金
关于android - fragment 未接收菜单回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6279571/