【问题标题】:OnCreateOptionsMenu not called when Style set to a Dialog Theme样式设置为对话框主题时未调用 OnCreateOptionsMenu
【发布时间】:2023-03-20 05:15:01
【问题描述】:

我在 Android 中有一个活动。具体来说,我使用的是 Xamarin.Android,以前是 monodroid。我有一个活动。当它在手机(小屏幕设备)上运行时,我们希望活动是全屏的。当它在平板电脑上运行时,我们希望活动有一个类似于对话框的“边框”。我进行程序检查以获取屏幕尺寸,然后确定我们使用的是平板电脑还是手机。如果我们在打电话,我会调用一个活动的 SetTheme 方法并传入一个对话框主题。我已经尝试了几个没有区别的对话主题。我的菜单项不显示。我对此进行了跟踪,并且未调用我覆盖的 OnCreateOptionsMenu 方法。我知道是因为我在我的 activty 的 OnCreateOptionsMenu 方法的第一行设置了一个断点,并且没有命中断点。

我用来设置主题的代码是: this.SetTheme (Android.Resource.Style.ThemeDialog); 我也从 Activty 的主题属性中尝试过这个,但我得到了相同的结果。

我正在寻找任何想法、想法等等。

感谢您的宝贵时间。 沃利

【问题讨论】:

  • 我有一个 repo - dl.dropboxusercontent.com/u/4149249/DialogExample.zip 我终于弄清楚了问题的顺序。如果我在加载要查看的内容之前设置了主题,那么我会得到主题,但我的选项菜单中没有项目。如果我第二次加载主题,我会看到要查看的内容和菜单项,但没有主题。任何人的任何想法都会受到赞赏。

标签: android android-activity xamarin.android


【解决方案1】:

默认情况下,对话框主题没有操作栏。没有它就没有理由创建菜单项(在较新的 android 版本上)。

onCreate 中调用RequestWindowFeature (WindowFeatures.ActionBar); 以获取对话框主题活动中的操作栏。然后会调用OnCreateOptionsMenu

【讨论】:

    猜你喜欢
    • 2012-07-12
    • 1970-01-01
    • 2016-05-29
    • 2010-10-16
    • 2013-04-20
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多