我正处于构建应用程序的概念化/设计阶段,但遇到了一些障碍。本质上,我正在寻找一种将一个活动嵌入到另一个活动的 UI 中的方法,类似于 TabHost/TabActivity 的方式。屏幕顶部将有一个窗口,其中包含其他活动,其下方将是独立于上述活动的按钮和控件,并且应始终可见。用户将能够从窗口中的一个活动导航到另一个活动,而不会对以下控件造成任何更改。
在研究这个问题时,我遇到了 ActivityGroup,它看起来很有用,但是我将如何实现它呢?有人有 ActivityGroup 的经验或有其他想法吗?
是的,您将实现一个 ActivityGroup,它将成为其他 Activity 的容器。当用户单击其中一个按钮时,您将获得对 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 代码获得了大部分信息,可以找到here http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=core/java/android/widget/TabHost.java;hb=HEAD
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)