android:使用ActivityGroup嵌入活动

mtm*_*ock 15 embed android embedding android-tabhost android-activity

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

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

syn*_*nic 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);
}
Run Code Online (Sandbox Code Playgroud)

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

它可以完成,我已经完成了......它的工作原理.它比我想象的要复杂一点.

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