Android 中 Tab 更改时更改菜单

2023-12-09

我的应用程序中有两个选项卡,我希望菜单根据选项卡进行更改。

这是我所做的

  TabHost tabHost = tabHost = getTabHost();

    TabSpec photospec = tabHost.newTabSpec("Photos");
    photospec.setIndicator("Photos", getResources().getDrawable(R.drawable.photo));
    Intent photosIntent = new Intent(this, Photos.class);
    photospec.setContent(photosIntent);



    TabSpec songspec = tabHost.newTabSpec("Songs");       
    songspec.setIndicator("Songs", getResources().getDrawable(R.drawable.songs));
    Intent songsIntent = new Intent(this, Songs.class);
    songspec.setContent(songsIntent);

    tabHost.addTab(photospec); // Adding photos tab
    tabHost.addTab(songspec); // Adding songs tab

现在,当用户单击“照片”选项卡时,我想显示一个用于编辑图片的菜单,当用户单击“歌曲”选项卡时,我想显示一个控制歌曲顺序的菜单。我想在每次用户单击任何选项卡时执行此操作。

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
    int currentTab = tabHost.getCurrentTab();
    if (currentTab == 0)
        startActivity(new Intent(this, Photosoptions.class));
    if (currentTab == 1)
        {
           startActivity(new Intent(this, Songsoptions.class));
                      } 
            return true;
        }



      @Override
    public boolean onPrepareOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        int currentTab = tabHost.getCurrentTab();

        if (currentTab == 0){
            menu.clear();
            inflater.inflate(R.menu.first, menu);
           closeOptionsMenu();

           }
       if (currentTab ==1){
            menu.clear();
            inflater.inflate(R.menu.second, menu);
        closeOptionsMenu();

       }
        return super.onPrepareOptionsMenu(menu);
    }

您可以使用以下代码:

@Override
 public boolean onPrepareOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        MenuInflater inflater = getMenuInflater();
        int currentTab = tabHost.getCurrentTab();
        Toast.makeText(getApplicationContext(), currentTab+"", Toast.LENGTH_SHORT);
        menu.clear();
        if (currentTab == 0) {
            inflater.inflate(R.menu.first, menu);  //  menu for photospec.
        } else {
            inflater.inflate(R.menu.second, menu);  // menu for songspec
        }
        return super.onPrepareOptionsMenu(menu);
    }

你不需要onCreateOptions菜单并且您必须处理项目点击onOptionsItemSelected

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中 Tab 更改时更改菜单 的相关文章

随机推荐

  • 单子、组成和计算顺序

    所有 monad 文章经常指出 monad 允许您按顺序对效果进行排序 但是简单的构图又如何呢 不是 f x x 1 g x x 2 result f g x 需要g x之前要计算f 单子是否做同样的事情 但处理效果 免责声明 单子有很多东
  • 修改表中的列

    我有下表test iD Name ParentId GroupID 1 1 Null 2 1 Null 3 1 Null 4 7 Null 5 7 Null 6 7 Null 7 9 Null 我怎样才能修改它来获取列GroupID像这样
  • JQUERY ajax 将值从 MVC 视图传递到控制器

    我想要的是将 txt Comments 的值从视图 使用 jquery ajax 传递到控制器 问题是 ajax jquery 不接受脚本标签作为字符串 意思是 当我在 txtComments 中输入任何 script html 标签时 a
  • LINQ Any 与 FirstOrDefault 的性能 != null

    我贡献的开源项目 OSP 代码中有多个地方必须确定集合中的元素是否满足特定条件 我见过LINQ表达式的使用Any lambda expression 在某些情况下和FirstOrDefault lambda expression null在
  • Ionic 隐藏导航栏而不是按钮

    我正在尝试寻找一种可能的方法来隐藏离子ion nav bar不隐藏ion nav barbuttons 我努力了 hide nav bar true 但它也隐藏了按钮 我已经搜索过并且也参考过this 但没有解决我的问题 问候 你只需要指定
  • 用于编辑源代码的 Docker 安装卷

    我的 Windows 系统上有 docker 设置 该应用程序的源代码位于C Application source地点 我希望这些信息在 docker 容器中可用 以便在开发过程中轻松更改代码 而无需重建映像 这就是我尝试过的 docker
  • 玩笑测试为 eventemitter 对象发出事件(express)

    试图从中获得灵感玩笑测试为 eventemitter 对象发出事件 http 没有解决我的痛苦express 假设有以下nodejs代码 server js const express require express const app e
  • 迁移到 Firebase Cloud Messaging:导入现有 Google 项目会对项目产生什么影响?

    In 设置 FCM它说 如果没有 请在 Firebase 控制台中创建一个 Firebase 项目 已经有一个了 如果您已经有一个现有的 Google 项目 与您的移动应用程序关联 单击导入 Google 项目 否则 单击 创建新项目 我有
  • 如何在 Spring Security 登录表单中进行额外验证?

    我想知道如何在 Spring Security 处理登录表单之前对其进行额外的验证 我正在考虑一些 LoginController LoginForm bean 但我不知道如何将它们组合在一起 如何配置它来工作 下面是我的 愿景 我搜索了一
  • 错误:rails 中的“不兼容的库版本”sqlite3-1.3.11

    我在 Ubuntu 系统 16 04 上工作 我的问题是每当我设置任何 Rails 项目并尝试运行rails s然后我收到 sqlite3 的 库版本不兼容 错误 如下所示 home jiggs rvm gems ruby 2 3 1 al
  • 字节中的位数是否等于 char 类型中的位数?

    C 标准有强制要求吗 是否存在一个字节中的位数不等于类型中的位数的平台char Yes Both are equal to CHAR BIT C标准定义CHAR BIT as 不是位字段 字节 的最小对象的位数 c99 明确表示 一个字节包
  • 如何获取Windows中当前交互式用户会话的数量?

    我正在编写一个 Windows 服务 它需要知道当前是否有任何用户登录在计算机上 到目前为止我已经尝试过Win32 LogonSession WMI 以及LsaEnumerateLogonSessions LsaGetLogonSessio
  • 在Python中通过strptime解析不带前导零的小时

    假设您有以下格式的时间 a 800 0 830 0 900 0 930 0 1000 0 1030 0 问题是缺少小时的前导零 例如00 30表示为30 08 00表示为800 and 00 00表示为2400 是否可以将此数据解析为tim
  • 如何计算并仅打印重复项?

    我知道如何遍历整个数组 但我只需要重复出现的次数 我处于初学者水平 所以只是循环和数组的基本使用 int array 12 23 22 0 43 545 4 55 43 12 0 999 87 for int i 0 i lt array
  • 了解LDR和STR吗?

    我正在使用 ARMSim 我猜它是一个 ARM 模拟器 并且我有这个演示程序 它基本上读取一个文本文件并打印文本文件中的整数 仅第一行 Start Open file for input LDR R0 InputFileName MOV R
  • 显示“android-feedback.com”库的对话框

    我正在按照这里给出的教程进行操作http www android feedback com library用于发送反馈 但我无法显示对话框onOptionsItemSelected Override public boolean onCre
  • 获取 Google Apps 脚本来授权 Fusion Table API

    我正在构建一个数据库 希望将其托管在 Fusion Table 中 并且正在开发一些用于与 Fusion API 交互的测试函数 我正在使用 Google Apps 脚本 并且严重依赖此代码的其他来源 我花了一天的大部分时间研究这个问题 但
  • C# 字节[]加密

    我有一个 Byte 字段 它是我需要加密的文件内容 没有什么特别或奇特的 只是足以确保下一个得到它的人不费吹灰之力就无法轻松解码它 我会使用 Net Framework 4 0 附带的加密 但我绝对不需要使文件比实际更大 我想过只是简单地反
  • 如何在 Windows Phone 8 中以编程方式锁定屏幕?

    我们可以使用下面的代码来防止屏幕锁定 PhoneApplicationService Current ApplicationIdleMode IdleDetectionMode Disabled and PhoneApplicationSe
  • Android 中 Tab 更改时更改菜单

    我的应用程序中有两个选项卡 我希望菜单根据选项卡进行更改 这是我所做的 TabHost tabHost tabHost getTabHost TabSpec photospec tabHost newTabSpec Photos photo