15

我正处于构建应用程序的概念化/设计阶段,我遇到了一些障碍。本质上,我正在寻找一种将一个活动嵌入到另一个 UI 中的方法,类似于 TabHost/TabActivity。屏幕顶部将有一个窗口,其中包含其他活动,在其下方将是独立于上述活动且应始终可见的按钮和控件。用户将能够在窗口中从一个活动导航到另一个活动,而不会对以下控件造成任何更改。

在调查我遇到的 ActivityGroup 问题时,它看起来很有用,但我将如何实现它?任何人都有 ActivityGroup 的经验或有其他想法?

4

1 回答 1

20

是的,您将实现一个 ActivityGroup,它将成为您的其他活动的容器。当用户单击其中一个按钮时,您将获得对 LocalActivityManager 的引用,并使用它来启动和嵌入内部活动。像这样的东西:

LocalActivityManager mgr = getLocalActivityManager();

Intent i = new Intent(this, SomeActivity.class);

Window w = mgr.startActivity("unique_per_activity_string", i);
View wd = w != null ? w.getDecorView() : null;

if(wd != null) {
    mSomeContainer.addView(wd);
}

注意,使用这种方法可能会相当复杂,因为除非焦点恰到好处,否则按下硬件按钮(如菜单按钮)只会触发 ActivityGroup 而不是内部 Activity 上的事件。在将内部活动添加到容器视图后,您必须找到某种方法来聚焦它,此时偶数将在内部活动中发生并传播到容器活动。

它可以做到,我已经做到了......而且它有效。它只是比我认为的要复杂一些。

无论如何,我通过查看 TabHost 代码获得了大部分信息,可以在这里找到

于 2010-07-16T13:34:55.160 回答