Если у вас есть отдельные действия для каждой страницы, которую вы хотите отобразить, вам нужно будет расширить ActivityGroup для действия контейнера (в котором отображаются вкладки) и LocalActivityManager для управления различными встроенными действиями, которые вы хотите использовать.
Это довольно сложно и не задокументировано. Я должен был прочитать исходный код для TabHost .
Поиск class IntentContentStrategy
.
По сути, идея заключается в том, что у вас есть представление контейнера, и вы используете LocalActivityManager для загрузки действия, получения его представления и помещения его в представление контейнера.
Выдержка из TabHost.java:
public View getContentView() {
if (mLocalActivityManager == null) {
throw new IllegalStateException("Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?");
}
final Window w = mLocalActivityManager.startActivity(
mTag, mIntent);
final View wd = w != null ? w.getDecorView() : null;
if (mLaunchedView != wd && mLaunchedView != null) {
if (mLaunchedView.getParent() != null) {
mTabContent.removeView(mLaunchedView);
}
}
mLaunchedView = wd;
// XXX Set FOCUS_AFTER_DESCENDANTS on embedded activities for now so they can get
// focus if none of their children have it. They need focus to be able to
// display menu items.
//
// Replace this with something better when Bug 628886 is fixed...
//
if (mLaunchedView != null) {
mLaunchedView.setVisibility(View.VISIBLE);
mLaunchedView.setFocusableInTouchMode(true);
((ViewGroup) mLaunchedView).setDescendantFocusability(
FOCUS_AFTER_DESCENDANTS);
}
return mLaunchedView;
}
Примечание: есть много тонких и странных вещей, которые вы должны сделать, чтобы заставить это работать (обратите внимание на ошибку, на которую они ссылаются в комментарии), поэтому, вероятно, это не задокументировано.