TabActivity の getCurrentActivity() は便利

TabActivitygetCurrentActivity() は、現在表示中のタブの Activity を返してくれる。
これは、とても便利で、PopUpMenu などの、TabActivity で管理するアクションから、
表示中のタブの Activity が何であれ、任意のタブを表示させてタブの中の Activity 表示を制御できる。


例えば、、、
public class GroupActivity extends ActivityGroup{

   // onCretae (省略)

   // ChildActivity を表示する

   public void showChild(){
      Intent intent = new Intent(this, ChildActivity.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      Window window = getLocalActivityManager().startActivity("child",intent);
      setContentView(window.getDecorView());
   }
}


public class TabChangeCmenuAcivity extends TabActivity{
   static String TAB1 = "Tab1";
   TabHost mTabHost;

   @Override
   public void onCreate(Bundle savedInstanceState) {
      
      mTabHost = getTabHost();
      // 上記、GroupActivity を TabSpec 経由で mTabHost に追加
      TabSpec tab1 = mTabHost.newTabSpec(TAB1);
      tab1.setIndicator("first", getResources().getDrawable(android.R.drawable.ic_menu_more));
      tab1.setContent(new Intent(this, GroupActivity.class));
      mTabHost.addTab(tab1);

      // コンテキストメニューまたは、PopupWindow などでのメニューなどを設定

   }
}

この TabChangeCmenuAcivity で用意するメニューなどのイベントで、

mTabHost.setCurrentTabByTag(TAB1); 

を実行後、

GroupActivity g = (GroupActivity)getCurrentActivity();

g.showChild();

を実行して表示させる。