Android:一个 Activity 中的多个选项菜单

发布于 2024-11-29 03:30:36 字数 242 浏览 1 评论 0原文

我有一个包含 ViewFlipperActivity,并且希望为该 ViewFlipper 中的每个视图显示不同的选项菜单。也就是说,按下菜单按钮时显示的菜单类型将取决于当前视图的类型。

但是,onCreateOptionsMenu() 仅调用一次(第一次显示选项菜单时),因此无法在那里实现创建不同的菜单。

我该如何解决这个问题?

I have an Activity containing a ViewFlipper and would like to show a different option menu for each view in that ViewFlipper. That is, the type of menu displayed when the menu button is pressed would depend on the type of the current view.

However, onCreateOptionsMenu() is called only once (when showing the option menu for the first time), so creating the different menus can't be implemented there.

How could I solve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紙鸢 2024-12-06 03:30:36

首先阅读 onPrepareOptionsMenu(Menu menu)

每次当用户在您的 Activity 之一内按下 Android 设备上的 Menu 时,将调用 onPrepareOptionsMenu 方法。第一次显示菜单时(即仅一次),将调用onCreateOptionsMenu 方法。

基本上,您应该在 onPrepareOptionsMenu 方法中进行任何更改,例如启用/禁用某些菜单项,或根据情况更改菜单项文本。

所以这样做(不要使用 onCreateOptionsMenu(Menu menu)

//Dynamically create context Menu
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        menu.clear(); //Clear view of previous menu
        MenuInflater inflater = getMenuInflater();
        if(condition_true)
            inflater.inflate(R.menu.menu_one, menu);
        else
            inflater.inflate(R.menu.menu_two, menu);
        return super.onPrepareOptionsMenu(menu);
    }

First read about onPrepareOptionsMenu(Menu menu)

Each time the user presses the Menu on their Android device while inside one of your activities, the onPrepareOptionsMenu method is called. The first time the menu is shown (i.e. only once), the onCreateOptionsMenu method is called.

Basically, the onPrepareOptionsMenu method is where you should make any changes such as enabling/disabling certain menu items, or changing the menu item text depending on the circumstances.

So do this (Don't use onCreateOptionsMenu(Menu menu) )

//Dynamically create context Menu
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        menu.clear(); //Clear view of previous menu
        MenuInflater inflater = getMenuInflater();
        if(condition_true)
            inflater.inflate(R.menu.menu_one, menu);
        else
            inflater.inflate(R.menu.menu_two, menu);
        return super.onPrepareOptionsMenu(menu);
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文