实例讲解Android应用开发中TabHost的使用要点

2019-12-10 18:18:32王振洲

在setOnTabChangedListener()方法中根据标签的切换情况来设置myMenuSettingTag

Override
  public void onTabChanged(String tagString) {
    // TODO Auto-generated method stub
    if (tagString.equals("One")) {
      myMenuSettingTag = 1;
    }
    if (tagString.equals("Two")) {
      myMenuSettingTag = 2;
    }
    if (tagString.equals("Three")) {
      myMenuSettingTag = 3;
    }
    if (tagString.equals("Four")) {
      myMenuSettingTag = 4;
    }
    if (myMenu != null) {
      onCreateOptionsMenu(myMenu);
    }
  }

然后onCreateOptionsMenu(Menu menu) 方法中通过MenuInflater过滤器动态加入MENU

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    // Hold on to this
    myMenu = menu;
    myMenu.clear();//清空MENU菜单
    // Inflate the currently selected menu XML resource.
    MenuInflater inflater = getMenuInflater();    
//从TabActivity这里获取一个MENU过滤器
    switch (myMenuSettingTag) {
    case 1:
      inflater.inflate(myMenuResources[0], menu);
      //动态加入数组中对应的XML MENU菜单
      break;
    case 2:
      inflater.inflate(myMenuResources[1], menu);
      break;
    case 3:
      inflater.inflate(myMenuResources[2], menu);
      break;
    case 4:
      inflater.inflate(myMenuResources[3], menu);
      break;
    default:
      break;
    }
    return super.onCreateOptionsMenu(menu);
  }

menu 布局

<?xml version="1.0" encoding="utf-8"?>
<menu
 xmlns:android="http://www.easck.com/apk/res/android">
<group android:id="@+id/group_a"><item android:id="@+id/item_a" android:icon="@drawable/gimp" android:title="Gimp"></item>
</group>
</menu>