TabActivity の getCurrentActivity() は、現在表示中のタブの 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();
を実行して表示させる。