使用ActivityGroup管理Activity
虽然google已经不推荐使用ActivityGroup来管理Activity了,但还是了解一下其工作原理,方便接下来的工作。
首先,建立一个ContainerActivity继承ActivityGroup,用来管理Activity。
public class ContainerActivity extends ActivityGroup {private LocalActivityManager localActivityManager;private Intent intent = new Intent();public LinearLayout linear;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.container_activity);linear = (LinearLayout) findViewById(R.id.linear1);localActivityManager = this.getLocalActivityManager();}}
布局文件就一个LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><LinearLayoutandroid:id="@+id/linear1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"android:layout_marginBottom="50dp"android:gravity="top"android:orientation="vertical" ></LinearLayout></RelativeLayout>
接下来,我们新建一个ActivityManager类来管理Activity
public class ActivityManager {public static ArrayList<View> viewsStack = new ArrayList<View>();public static void backToPrevious(ContainerActivity parent) {viewsStack.remove(viewsStack.size() - 1);parent.linear.removeAllViews();parent.linear.addView(viewsStack.get(viewsStack.size() - 1));}
}
注意:我们的ContainerActivity里面什么都没有,新建HomeActivity,并添加布局文件。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="20dp"android:text="@string/hello_world" /></LinearLayout>
HomeActivity里面就一个TextView,然后我们在ContainerActivity中添加代码,如下:
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.container_activity);linear = (LinearLayout) findViewById(R.id.linear1);localActivityManager = this.getLocalActivityManager();intent.setClass(ContainerActivity.this,HomeActivity.class);newActivity(intent);}public void newActivity(Intent intent) {intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);linear.removeAllViews();View view = localActivityManager.startActivity("subActivity", intent).getDecorView();linear.addView(view);ActivityManager.viewsStack.clear();ActivityManager.viewsStack.add(view);}
运行,可以看到,HomeActivity中的内容已经被添加到ContainerActivity中去了。
使用ActivityGroup管理Activity相关推荐
- Android doc |Getting Started|部分 转载 --管理Activity生命周期
原文 https://developer.android.com/training/basics/activity-lifecycle/index.html 原文被部分改动 管理Activity生命周 ...
- android 管理activity
2019独角兽企业重金招聘Python工程师标准>>> 关于怎么一次退出所有Activity网上有很多很多种说法,比如用杀进程的方式:android.os.Process.killP ...
- android管理activity顺序,android activity 六个主要函数以及一些调用顺序
Android中一个Activity一般都需要实现六个函数: onCreate(), onStart(), onResume(),onPause(),onStop(),onDestroy(). onC ...
- Android官方开发文档Training系列课程中文版:管理Activity的生命周期之Activity的重建
原文地址:http://android.xsoftlab.net/training/basics/activity-lifecycle/recreating.html#RestoreState 有这么 ...
- Android官方开发文档Training系列课程中文版:管理Activity的生命周期之停止和重启Activity
原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/stopping.html#Start 在activity的 ...
- Android官方开发文档Training系列课程中文版:管理Activity的生命周期之暂停和恢复Activity
原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/pausing.html 在APP的正常使用过程中,在前台工 ...
- Android官方开发文档Training系列课程中文版:管理Activity的生命周期之启动一个Activity
原文地址 : http://android.xsoftlab.net/training/basics/activity-lifecycle/index.html 导言 用户通过导航退出或者返回应用的时 ...
- (android文档原创翻译)管理Activity的生命周期一
( 英文原文链接地址) 1.启动你的Activity 不同其它的应用程序通过main()方法来启动,android系统是按照一定的顺序通过调用其生命周期(lifecycle)的回调方法来启动或者结束一 ...
- [Andriod官方训练教程]管理Activity的生命活动之开始一个Activity
原文地址:https://developer.android.com/training/basics/activity-lifecycle/starting.html ---------------- ...
- Android学习之管理Activity的生命周期
Activity生命周期 activity第一次启动的时候,它来到系统的前台,开始与用户交互.在此期间,Android系统调用了Activity生命周期中一系列的方法.如果用户执行启动了另一个acti ...
最新文章
- Redis源码解析——Zipmap
- 宅家学习,如何进行Kubernetes Ingress控制器的技术选型?
- Linux进程和计划任务管理
- TensorFlow升级1.4:Cannot remove entries from nonexistent file \lib\site-pack
- mongodb数据库淘汰_mongodb 内存数据淘汰策略
- 传图识字java_Java:全面 清晰的 NIO 学习攻略
- 阐述oracle的体系结构,Oracle数据库逻辑体系结构详解
- 典型的DIV+CSS布局(左中右)
- 最近和一个35岁的朋友聊天,他最近在找工作
- 目标检测之hough forest---霍夫森林(Hough Forest)目标检测算法
- Android图片的三级缓存整理
- 通过纯真IP数据库查询IP归属地信息
- 使用CMake编译Geos3.5.0
- android 设置锁屏壁纸
- 论文精度 —— 2018 CVPR《Generative Image Inpainting with Contextual Attention》
- 苹果发布会在即 iMessage将迎来哪些重大更新?
- window 中 批量结束进程的命令
- 论文翻译-ASTER: An Attentional Scene Text Recognizer with Flexible Rectification
- WIN7系统安装及动态分区详解步骤
- 学习WEB前端开发是选择自学还是去培训机构?