【发布时间】:2011-09-10 21:30:20
【问题描述】:
我有一个片段类,它扩展了Fragment 并调用setHasOptionsMenu 来参与菜单。这个类还实现了onCreateOptionsMenu、onPrepareOptionsMenu和onOptionsItemSelected。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
....
}
我在我的 Activity 中使用 FragmentTransaction 动态加载此片段(扩展 FragmentActivity)。
但是,没有调用任何菜单回调(onCreateOptionsMenu、onPrepareOptionsMenu 和 onOptionsItemSelected)(我已经在这些方法中使用一些断点进行了调试)并且没有显示菜单。
我错过了什么吗?我需要在我的活动中添加一些东西吗?
我正在使用 Android 兼容性库,使用 L11 SDK 进行编译并在 Xoom 中进行测试。
编辑:我发现了问题。我的 AndroidManifest 的目标是 L11,这似乎隐藏了菜单按钮并防止调用回调。但是,如果我从清单中删除它,我会失去一些我需要的其他功能(例如列表中的激活状态)。有谁知道如何在不从清单中删除targetSdkVersion=11 的情况下解决此问题(启用菜单按钮)?
【问题讨论】:
-
您能否确认您的片段实际上正在被加载,即在 onCreate 被调用?
-
是的,我可以确认。我也尝试过静态加载它,意思是在活动布局中定义片段,仍然没有菜单。
-
@aromero 没有什么明显的想法。您可以在片段类中实现这些方法。我假设 onCreateView 正在返回一个膨胀的视图,以便您的片段确实有一个 UI?如果不是,则不会显示菜单。如果是这样,那么我建议调试兼容性库源以查看消息未发送的原因。
-
@PJL 感谢将尝试调试库。该片段确实有一个 UI,其他一切都运行良好。
-
我找到了问题所在。我将编辑我的问题。
标签: android android-fragments fragment