`

LocalActivityManager

 
阅读更多

本来标题名字准备叫《如何在一个Activity的一部分中显示其他Activity》,但是实在太长了……

于是就用其中必须用到LocalActivityManager这个类作为标题了。
 
总的来说,实现“如何在一个Activity的一部分中显示其他Activity”除了LocalActivityManager还需要一个或多个"容器"Layout(或者和Layout同级别的View)。
 
假设这个容器是一个LinearLayout,id是container,通常来说我们会想把这个容器的layout_weight设置成1,以便把位置先占好。
 
然后实例化LocalActivityManager:
LocalActivityManager mgr = getLocalActivityManager();
然后
mContainer = (LinearLayout) findViewById(R.id.container);
最后就可以把MyOtherActivity塞进container里面了。
mContainer.addView((mgr.startActivity("MyOtherActivityInstance1", new Intent(this, MyOtherActivity.class))).getDecorView());
 
addView是往Layout里动态增加View,别处也会用到。mgr.startActivity比一般的startActivity多一个String id参数:
"public Window startActivity (String id, Intent intent)"
 
其实这个String id只是一个标识,自己随便起个不重样的名字就好了,作用就是系统看到id一样的activity时会把两个activity当作一个处理,不会弄出平行的两个来,反之亦然。
 
至于最后这个getDecorView()方法,我一开始觉得很神奇,查了很多地方,最后觉得其实也不是很复杂,就是把Activity里面所有的View,包括其摆放方式,都给调出来,这样在addView的时候就不用担心摆放等问题了。
 
 
参考资料:
分享到:
评论

相关推荐

    将一个activity转换成一个view并显示

    LocalActivityManager类是管理activity的,然后通过startActivity(String id, Intent intent)这个方法获取Window获取当前Window对象,再然后调用getDecorView()方法获取当前activity对应的view,这样就可以使用...

    android:fragment实现新闻TabHost滑动页面

    以前做这种新闻标签页都是用LocalActivityManager。当把api升级到最新后发现这个LocalActivityManager已经被废弃了,取而代之的是FragmentManager,经过一下午的研究终于用FragmentManager实现了新闻滑动标签页的...

    ActivityGroup

    2. **初始化LocalActivityManager**:在ActivityGroup的onCreate()方法中初始化LocalActivityManager。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate...

    tabhost的子activity跟activity通信

    通过重写LocalActivityManager的startActivityForResult()方法,我们可以确保返回的结果被传递到正确的子Activity。 下面是一个简单的步骤来实现这种通信: 1. 创建一个LocalActivityManager的子类,例如`...

    android activitygroup demo

    2. **LocalActivityManager**:ActivityGroup通过LocalActivityManager对象来管理和控制子Activity的生命周期。LocalActivityManager允许我们启动、暂停、恢复和销毁子Activity,同时提供了窗口(Window)对象,以...

    ActivityGroup框架

    LocalActivityManager负责启动、销毁和保存内部Activity的状态,这样在切换Tab时,即使Activity被销毁,也能在下次回来时快速恢复之前的状态。此外,它还提供了窗口栈的概念,方便在子Activity之间进行导航。 ...

    使用ActivityGroup管理Activity

    `ActivityGroup`的工作原理主要依赖于两个关键方法:`localActivityManager`和`startChildActivity()`。`localActivityManager`是一个内部管理Activity实例的对象,它负责创建、销毁和保存Activity的状态。`...

    ActivityGroup应用-如何把一个Activity加载成一个视图

    ActivityGroup是android.app.LocalActivityManager的包装器,它允许你管理一组内部的Activity。在早期版本的Android中,开发者可能会用ActivityGroup来实现类似TabHost的功能,或者创建复杂的视图层次结构。下面我们...

    ActivityGroupDemo

    而是通过LocalActivityManager对象来管理这些内部Activity的生命周期,LocalActivityManager会跟踪Activity的状态,如创建、暂停、恢复和销毁。 **ActivityGroup的使用步骤** 1. **创建ActivityGroup类**:首先,...

    Android源码——TabHost内嵌ActivityGroup界面管理源码_new_17.zip

    2. 创建子Activity的Intent,并使用LocalActivityManager的startActivity()方法启动Activity。 3. 使用LocalActivityManager的getWindow()方法获取子Activity的窗口,以便在TabHost中显示。 4. 实现...

    android Group实例代码下载

    1. **`LocalActivityManager`**:`ActivityGroup`内部使用了一个`LocalActivityManager`对象,它可以管理和控制组内的子Activity。每个子Activity会被包装成一个`Window`对象,这样可以在同一个`View`层次结构中显示...

    使用ActivityGroup来切换Activity和Layout

    通过`LocalActivityManager`,我们可以启动、切换和管理子`Activity`,同时保持它们的状态。 在实现过程中,我们首先需要创建一个`ActivityGroup`的子类,比如`MyActivityGroup`,并重写其关键方法。这些方法包括:...

    ActivityGroup Demo

    你可以通过`LocalActivityManager.startActivity()`方法启动子Activity,并使用`LocalActivityManager窗户ID`来获取和操作子Activity的窗口。 3. **子Activity的管理**:在`ActivityGroup`中,每个子Activity都有一...

    ActivityGroupTest ActivityGroup 实现Tab分页

    2. **设置LocalActivityManager**:在`MyActivityGroup`的`onCreate`方法中,获取`LocalActivityManager`实例并设置其启动模式为`START_STRETCH_INTO_PARENT`。 3. **创建TabHost**:在主`Activity`中,设置`...

    切换activity

    2. **设置LocalActivityManager**: 在ActivityGroup中,需要实例化一个LocalActivityManager对象,它用于管理子Activity的生命周期。 3. **创建子Activity**: 创建要在ActivityGroup内部使用的子Activity,并在需要...

    Android TabHost内嵌ActivityGroup界面管理源码-IT计算机-毕业设计.zip

    ActivityGroup内部通常会使用LocalActivityManager来管理这些子Activity的状态。 在使用TabHost内嵌ActivityGroup时,主要流程如下: 1. 创建TabHost实例,并设置其内容视图。 2. 为每个标签页创建TabSpec,指定...

    TabHost, ActivityGroup 的使用例子

    3. **切换子Activity**:在需要切换子Activity时,调用`LocalActivityManager.startActivityForResult(String id, Intent intent, int requestCode)`,然后通过`LocalActivityManager.getActivity(String id)`获取...

    ActivityGroup实现Activit栈

    - 在ActivityGroup中,可以通过LocalActivityManager获取子Activity的实例,进而直接调用子Activity的方法进行数据传递,这种方式相对直接但不推荐,因为可能会引发内存泄漏。 - 更推荐使用Intent的Extra参数进行...

Global site tag (gtag.js) - Google Analytics