private void addTabToGroup(TiUITabGroup tg, TabProxy tab) {
    TiTabActivity tta = weakActivity.get();
    if (tta == null) {
      if (DBG) {
        Log.w(LCAT, "Could not add tab because tab activity no longer exists");
      }
    }
    Drawable icon =
        TiDrawableReference.fromObject(getTiContext(), tab.getProperty(TiC.PROPERTY_ICON))
            .getDrawable();
    String tag = TiConvert.toString(tab.getProperty(TiC.PROPERTY_TAG));
    String title = TiConvert.toString(tab.getProperty(TiC.PROPERTY_TITLE));
    if (title == null) {
      title = "";
    }
    tab.setTabGroup(this);
    final WindowProxy vp = (WindowProxy) tab.getProperty(TiC.PROPERTY_WINDOW);
    vp.setTabGroupProxy(this);
    vp.setTabProxy(tab);
    if (tag != null && vp != null) {
      TabSpec tspec = tg.newTab(tag);
      if (icon == null) {
        tspec.setIndicator(title);
      } else {
        tspec.setIndicator(title, icon);
      }

      Intent intent = new Intent(tta, TiActivity.class);
      vp.fillIntentForTab(intent);

      tspec.setContent(intent);

      tg.addTab(tspec);
    }
  }
  private void handleAddTab(TabProxy tab) {
    String tag = TiConvert.toString(tab.getProperty(TiC.PROPERTY_TAG));
    if (tag == null) {
      String title = TiConvert.toString(tab.getProperty(TiC.PROPERTY_TITLE));
      if (title == null) {
        String icon = TiConvert.toString(tab.getProperty(TiC.PROPERTY_ICON));
        if (icon == null) {
          tag = tab.toString();
        } else {
          tag = icon;
        }
      } else {
        tag = title;
      }

      tab.setProperty(TiC.PROPERTY_TAG, tag, false); // store in proxy
    }

    if (tabs.size() == 0) {
      initialActiveTab = tab;
    }
    tabs.add(tab);

    if (peekView() != null) {
      TiUITabGroup tg = (TiUITabGroup) peekView();
      addTabToGroup(tg, tab);
    }
  }
 @Override
 public void releaseViews() {
   super.releaseViews();
   if (tabs != null) {
     synchronized (tabs) {
       for (TabProxy t : tabs) {
         t.setTabGroup(null);
         t.releaseViews();
       }
     }
   }
   tabs.clear();
 }
  private int indexForId(String id) {
    int index = -1;

    int i = 0;
    for (TabProxy t : tabs) {
      String tag = (String) t.getProperty(TiC.PROPERTY_TAG);
      if (tag.equals(id)) {
        index = i;
        break;
      }
      i += 1;
    }
    return index;
  }